Łuk*_*ski 35 grep process kill ps
我运行命令ps -A | grep <application_name>
并获取这样的进程列表:
19440 ? 00:00:11 <application_name>
21630 ? 00:00:00 <application_name>
22694 ? 00:00:00 <application_name>
Run Code Online (Sandbox Code Playgroud)
我想从列表中杀死所有进程:19440
, 21630
, 22694
。
我试过,ps -A | grep <application_name> | xargs kill -9 $1
但它有错误。
kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>
Run Code Online (Sandbox Code Playgroud)
我怎样才能优雅地做到这一点?
小智 55
pkill -f 'PATTERN'
Run Code Online (Sandbox Code Playgroud)
将杀死模式PATTERN
匹配的所有进程。使用该-f
选项,将考虑整个命令行(即包括参数)。如果没有该-f
选项,则只会考虑命令名称。
另请参阅man pkill
您的系统。
Łuk*_*ski 19
问题是ps -A | grep <application_name> | xargs -n1
像这样返回输出
19440
?
00:00:11
<application_name>
21630
?
00:00:00
<application_name>
22694
?
00:00:00
<application_name>
Run Code Online (Sandbox Code Playgroud)
您可以awk
先获取一列ps
输出。
ps -A | grep <application_name> | awk '{print $1}' | xargs -n1
Run Code Online (Sandbox Code Playgroud)
将返回 PID 列表
19440
21630
22694
Run Code Online (Sandbox Code Playgroud)
并添加kill -9 $1
您有一个可以杀死所有 PID 的命令
ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1
Run Code Online (Sandbox Code Playgroud)