乌班图16.04
我习惯使用这个命令行来杀死任何与命令匹配的进程
for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done
shellcheck 不太喜欢它并建议
root@singa /home # shellcheck run
In run line 4:
for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done
^-- SC2009: Consider using pgrep instead of grepping ps output.
在这里完成此操作需要什么标志来替换 XXX
for i in $(pgrep XXX | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done
我已经检查了 pgrep 的手册页。
答案1
for pid in $(pgrep command); do
kill -9 $pid
done
或者,更好的是:
pkill -9 command
顺便说一句,无私地使用kill -9
有时会导致僵尸爆发、孤立文件、永久临时文件和其他弊病。请考虑仅使用kill
默认发送SIGTERM
而不是SIGKILL
。
答案2
我已经完成了下面的方法
for i in pickup hald-runner; do pgrep $i | awk '{print "kill" " " $1}'| sh;done
这里pickup,hald-runner是进程名称