Ł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)