我想杀死一系列过程,例如
PID PPID
100 XXX
101 100
102 101
当我使用pkill -P 100
PID 100和101模具时,按预期方式,但给定102作为它的PPID。
如何强制pkill杀死进程的直接后代之后的链式进程?
pkill
完全按照您的要求执行操作:它杀死了父级为100的进程。而不是父级为100的进程。
Linuxpkill
和FreeBSD都没有遍历进程树的选项。您可以调用pstree -l
并解析其输出。
请记住,如果A叉B,B叉C然后B死了,则没有可以连接A和C的父子关系。
也许有一种方法可以杀死所有这些进程,但是请注意,它可能会过度匹配。
如果将否定的进程ID传递给kill
,则会杀死整个进程组。这是原子的,因此即使其中一个进程在您运行时分叉,它也能正常工作kill
。这只会杀死尚未将自己置于自己的组中的进程,并且还会杀死父进程和其他处于同一进程组中的进程。运行ps -o pgid …
以查看进程的进程组ID。
如果要杀死的所有进程都打开了特定文件,则可以使用fuser -k /some/file
杀死所有打开此文件的进程。
Linux上的另一种选择是在自己的PID名称空间中运行进程。然后,您可以通过从名称空间中杀死伪PGID -1来杀死整个名称空间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句