首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不杀死进程的直接后代的进程

问不杀死进程的直接后代的进程
EN

Unix & Linux用户
提问于 2016-06-22 23:41:51
回答 1查看 7.1K关注 0票数 1

我想杀死一条过程链。

代码语言:javascript
复制
PID  PPID
100  XXX
101  100
102  101

当我按照预期使用pkill -P 100 PID 100和101DIE时,但是102是按PPID的方式给出的。

我怎样才能强迫pkill继续杀死经过进程的直接后代的链式进程?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-06-22 23:53:26

pkill正按照您的要求做:它杀死了父进程为100的进程。不是父进程的父进程是100。

Linux的pkill和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来杀死整个命名空间。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/291491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档