有没有遇到过脚本跑得肆无忌惮的根本停不下来,只能用重启的办法,因为单纯的kill就根本杀不掉脚本进程。
我尝试过ps出所有sh的进程,然后kill -9 后面跟一大串ps出来的进程号,结果杀掉进程了。这样做好使但是费力。
于是,想到写个sh循环处理进程,但是每次杀进程的话都要要把该sh push到手机里,然后shell下面用sh命令运行它,才能杀掉脚本进程。这步骤真是太繁琐。
一、下面是杀进程的sh脚本
#!/bin/sh
#根据进程名杀死进程
processname='sh'
PROCESS=`ps -ef|grep $processname|grep -v grep|grep -v PPID|grep -v mca|awk '{ print $2}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done
二、别止步啊,有简单的办法,下面,一句话代替了如上繁琐的步骤,轻松杀死脚本的进程:
ps -ef | grep sh | grep -v grep | grep -v mca |awk '{print $2}' | xargs kill -9
以下是参数解释:
ps -ef 表示查看全格式的全部进程。此处用-A也行:显示所有程序
grep 是过滤
grep -v 是反过滤,就是不要把它顾虑出来
print 是打印
$2 是第二列,也就是进程的ID
awk 是对于文件中一行行的独处来执行操作 。
awk '{print $2}' 是把每一行的第二列(进程ID)打印出来
| xargs 是将"|" 前面获取到的进程号通过空格分割,传递给kill -9,将这些进程全部杀死
三、还有更简单的,在shell下面输入命令:
pkill sh
pkill是杀死所有sh的文件。
以上pkill sh是杀掉在adb里用sh命令跑起来的脚本。如果是用自己开发的android工具跑起来的脚本,且用这个pkill sh命令无法删除的话,那么就可以pkill杀掉跑脚本的工具的包名,假设包名含有点mca的话,则adb shell pkill mca。
完。