根据pid结束对应进程(先找出结果集的第二列所表示的pid,再传递pid参数给kill -9 命令):
ps -ef | grep main | grep -v grep | awk '{print $2}' | xargs kill -9
其中ps -ef | grep main | grep -v grep | awk '{print $2}'
这前半部分命令的含义是:获取指定名称为 “main” 进程的pid,更多参数用法如下:
grep -v grep
:不显示包含grep的行grep -v '^#'
:不显示以#号开头的行(正则表达式)grep -v '#'
:不显示有#号的行
注意:如果在使用上述命令过程中,报了如下图的错误:
编辑
说明这个命令 ps -ef | grep main | grep -v grep | awk '{print $2}'
获取的结果为空,填入xargs参数的值也为空,因此报错。我们可以在 ps -ef | grep main | grep -v grep | awk '{print $2}' | xargs kill -9
的基础上,加上xargs的参数: --no-run-if-empty
,意思就是如果前半部分的命令获取到的结果为空,那么不执行后续kill命令。
完整命令示例如下:ps -ef | grep main | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill -9
上述问题的答案还是在 Stack Overflow上找到的,跳转链接:Bash - Killing all process in a single command
编辑