我在我的nexus 5上运行了android(5.1.1)并尝试使用脚本来杀死进程(kill_process.sh)。
while true; do
PROCESS=$(pgrep -l whatsapp)
if [[ $PROCESS == *"whatsapp"* ]]; then
kill $(pgrep -f whatsapp)
fi
done
我能够使用app" Universal Init.d"启动脚本,但是这个特定的脚本似乎没有在启动时工作。只要我将ssh插入手机并手动运行,它就能正常工作。例如,一旦我发布了whatsapp,它就会被立即杀死。
是否有人有任何想法可以让它在启动时工作?
此外,while循环可能不是最有效的方法...所以任何想法都是受欢迎的。
EDIT1:
将if语句改为
case $PROCESS in *"whatsapp"*)
kill $(pgrep -f whatsapp)
esac
Edit2:有没有办法守护脚本?
Edit3:我设置了另一个只包含一行start-stop-daemon --exec /path_to_main_script/kill_process.sh -S
的脚本。我只将新脚本放在/system/etc/init.d目录中,将kill_process.sh脚本放入/ system / etc /中的不同子目录中。这样,新脚本将在引导时运行,然后调用kill_process.sh脚本。但是它并没有运行稳定,这是由通用初始化" Universal Init.d" app:当应用程序崩溃时,脚本停止运行。有什么想法吗?
答案 0 :(得分:0)
免责声明:我从未使用过该应用 Universal Init.d ,也没有很多Android体验。但我在桌面上做了一些测试:
me:~$ bash -x /tmp/x
+ a=abcd
+ [[ abcd == *bc* ]]
+ echo 0
0 # correct
me:~$ dash -x /tmp/x
+ a=abcd
+ [[ abcd == *bc* ]]
/tmp/x: 3: /tmp/x: [[: not found
+ echo 127
127 # [[ not supported
me:~$ busybox sh -x /tmp/x
+ a=abcd
+ [[ abcd == *bc* ]]
+ echo 1
1 # wrong!
剧本:
a=abcd
[[ $a == *bc* ]]
echo $?
结论:您应该检查应用程序使用的shell。与[[
结合的*
语法可能会失败。我认为它是忙碌的或者在那里冲刺......
为了节省电池电量,我建议至少用
替换while true
while sleep 1; do
但这也只是一个黑客攻击。您应该寻找基于事件的解决方案(无法帮助您)