【发布时间】:2015-09-13 14:31:32
【问题描述】:
我在我的 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
我可以使用应用程序“Universal Init.d”让脚本在启动时运行,但这个特定的脚本似乎在启动时无法运行。只要我 ssh 进入我的手机并手动运行它,它就可以工作。例如,一旦我启动 whatsapp,它就会立即被杀死。
有没有人知道我可以做些什么来让它在启动时工作?
此外,while 循环可能不是执行此操作的最有效方式……因此欢迎提出任何想法。
编辑1:
将 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”应用程序引起的:当应用程序崩溃时,脚本停止运行。有什么想法吗?
【问题讨论】:
-
至少,我会将
true替换为sleep 1。但不管你做什么,对电池都不好……