可以向具有给定 ppid 的所有进程发送终止信号吗?

可以向具有给定 ppid 的所有进程发送终止信号吗?

我发现自己必须定期发送kill -STOP 一百万个流程,但它们都来自同一个父级。有没有更聪明的方法来做到这一点?

答案1

尝试pkill

pkill -STOP -P the_ppid

如果你没有pkill,还有另一种选择:

ps -o pid --ppid the_ppid --no-heading | xargs kill -STOP

答案2

它们可能都在同一个进程组中?如果是这种情况,您只需使用常规的旧 kill 命令,并将 pid 设为负数。

因此要找到所有 apache 进程的进程组:

$ sudo ps -e -o cmd,pgrp | grep apache
/usr/sbin/apache2 -k start  24065
/usr/sbin/apache2 -k start  24065
/usr/sbin/apache2 -k start  24065
/usr/sbin/apache2 -k start  24065

然后向整个进程组发送信号:

$ sudo kill -KILL -24065

相关内容