如何杀死多个进程

blu*_*sky 28 kill ps process-management

找到要杀死的进程的 PID 使用:

pgrep <process command>
Run Code Online (Sandbox Code Playgroud)

然后我使用kill命令杀死返回的PID pgrep <process command>

kill <PID>
Run Code Online (Sandbox Code Playgroud)

这些命令可以合并为一个,以便可以杀死 PID 或由 返回的 PIDpgrep <process command>吗?或者是否有通过命令名称杀死多个进程的方法?

就像是 : kill(pgrep <name of process>)

Mat*_*ock 35

您可以使用 pkill:

pkill httpd
Run Code Online (Sandbox Code Playgroud)

您可能还想使用进程替换(虽然这不是很清楚):

kill $(pgrep command)
Run Code Online (Sandbox Code Playgroud)

你可能想使用xargs

pgrep command | xargs kill
Run Code Online (Sandbox Code Playgroud)

  • 我在回答中做了类似的事情,有人向我指出我引入了竞争条件。进程 ID 可能会在调用 `pgrep` 和 `kill` 之间失效。只需使用`pkill`。 (4认同)
  • @Kusalananda 同样的事情也可能发生在`pkill` 获取进程列表和实际发送信号之间,在这种情况下很难看到。 (3认同)

Byt*_*der 18

您也可以使用killall,例如

killall firefox
Run Code Online (Sandbox Code Playgroud)

发送SIGTERM到所有firefox进程。

  • 请注意,`killall` 在不同的 unix 系统上有不同的含义 - 如果您使用的是非 Linux 系统,请务必查看文档。 (8认同)

小智 11

是的,您可以使用 bash 功能并循环输出。

$ for proc in $(pgrep <process command>); do kill $proc; done
Run Code Online (Sandbox Code Playgroud)