-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservice.sh
133 lines (133 loc) · 3.79 KB
/
service.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/system/bin/sh
MODDIR=${0%/*};
#上次杀死
lastKilledCount=0;
#总击杀
killedCount=0;
#规则数量
rulesCount=0;
#暂停状态 写文件判断用
paused=0;
#规则
#检查
test -f "/data/adb/processexecutioner.config";
#获取数量
if [ "$?" == "1" ];then
#复制默认模板
cp "$MODDIR/defaultRules" "/data/adb/processexecutioner.config"
fi
rules=$(cat /data/adb/processexecutioner.config);
#初始显示规则数量
for line in $rules; do
if [ line == "" ];then
continue
fi
rulesCount=$(expr $rulesCount + 1);
done
# 删除标记
rm -f "$MODDIR/waitingReboot"
rm -f "$MODDIR/pause"
rm -f "$MODDIR/dead"
rm -f "$MODDIR/suicide"
rm -f "$MODDIR/suicide_update"
desc="(它们活着的意义是什么🤔) 已加载$rulesCount条规则 本次启动共处决0个进程 (反正不止去码头整点薯条😋)";
sed -i "s/description=.*/description=$desc/" $MODDIR/module.prop
#检测到文件即退出
checkExitFile(){
test -f "$MODDIR/suicide"
if [ "$?" == "0" ];then
desc="[Stop Working](它们活着的意义是什么🤔) 已加载***条规则 本次启动共处决***个进程 (反正不止去码头整点薯条😋)";
sed -i "s/description=.*/description=$desc/" "$MODDIR/module.prop"
#标记
rm -f "$MODDIR/suicide"
touch "$MODDIR/dead"
sleep 2s
exit
fi
#更新 不动文件
test -f "$MODDIR/suicide_update"
if [ "$?" == "0" ];then
#标记
rm -f "$MODDIR/suicide_update"
touch "$MODDIR/dead"
sleep 2s
exit
fi
}
onPause(){
if [ "$paused" == "0" ];then
desc="[Paused](它们活着的意义是什么🤔) 已加载$rulesCount条规则 本次启动共处决$killedCount个进程 (反正不止去码头整点薯条😋)";
sed -i "s/description=.*/description=$desc/" $MODDIR/module.prop
paused=1
fi
}
checkReload(){
test -f "$MODDIR/reload"
if [ "$?" == "0" ];then
rm -f "$MODDIR/reload"
test -f "/data/adb/processexecutioner.config";
# 规则给删了 玩毛啊
if [ "$?" == "1" ];then
desc="❌[ERROR]Missing config file";
sed -i "s/description=.*/description=$desc/" $MODDIR/module.prop
return 11
fi
#覆盖
rules=$(cat /data/adb/processexecutioner.config);
rulesCount=0;
for line in $rules; do
if [ line == "" ];then
continue
fi
rulesCount=$(expr $rulesCount + 1);
done
desc="(它们活着的意义是什么🤔) 已加载$rulesCount条规则 本次启动共处决$killedCount个进程 (反正不止去码头整点薯条😋)";
sed -i "s/description=.*/description=$desc/" $MODDIR/module.prop
fi
}
#熄屏检测
skinOnScreenOff(){
local isScreenOff=dumpsys deviceidle | grep mScreenOn
if [ "$isScreenOff" != "mScreenOn=true" ];then
return 1
fi
return 0
}
while true; do
sleep 10s
checkExitFile
# 检查暂停标识
test -f "$MODDIR/pause";
if [ "$?" == "0" ];then
onPause
continue
fi
# 熄屏功能文件
test -f "$MODDIR/checkScreen"
if [ "$?" == "0" ];then
skinOnScreenOff
if [ "$?" == "1" ];then
continue
fi
fi
if [ "$paused" == "1" ];then
#刚恢复运行 移除暂停提醒
desc="(它们活着的意义是什么🤔) 已加载$rulesCount条规则 本次启动共处决$killedCount个进程 (反正不止去码头整点薯条😋)";
sed -i "s/description=.*/description=$desc/" $MODDIR/module.prop
paused=0;
fi
checkReload
for processName in $rules;do
pkill $processName
if [ "$?" == "0" ];then
killedCount=$(expr $killedCount + 1)
fi
done
# 这算优化吗...
#如果一轮下来没杀到进程并且规则无数量改变 不操作文件
if [ $lastKilledCount != $killedCount ];then
desc="(它们活着的意义是什么🤔) 已加载$rulesCount条规则 本次启动共处决$killedCount个进程 (反正不止去码头整点薯条😋)";
sed -i "s/description=.*/description=$desc/" $MODDIR/module.prop
lastKilledCount=$(expr $killedCount + 0);
fi
done