有时候在linux下需要杀死所有满足某个条件的进程,但是用killall直接杀死某个进程名中包含的所有正在运行的进程是不可能的(我们可能只需要杀死其中一个或者运行指定参数命令的进程)。这时候就需要把ps,grep,切杀一起用了。
好了,这里具体参考一下:
PS-ef | grep LOCAL=NO | grep-v grep | cut-c 9-15 | xargs kill-9
运行此命令将终止所有带有关键字“LOCAL=NO”的进程。方便吗?
下面简单解释一下这个命令:
管道符号“|”用于分隔两个命令,管道符号左边的命令输出将用作管道符号右边的命令输入。
“Ps -ef”是一个查看linux中所有进程的命令。检索到的进程将被用作下一个命令“grep LOCAL=NO”的输入。
' grep LOCAL=NO '的输出结果是所有带有关键字' LOCAL=NO '的进程。
“Grep -v Grep”是从列出的进程中删除了关键字“grep”的进程。
Cut -c 9-15 '是截取输入行的第9个字符到第15个字符,而这恰好是进程号PID。
“xargs kill -9”中的xargs命令用于将前一个命令的输出结果(PID)作为“kill -9”命令的参数,并执行该命令。“Kill -9”将强制终止指定的进程。
其他情况下,只需修改‘grep LOCAL=NO’中的关键字部分。
另一种方法是使用awk。
PS x | grep gas | grep-v grep | awk“{ print $ 1 }”| xargs kill-9