有没有办法使用终端来杀死进程树?
通过杀死进程树,我的意思是杀死进程本身以及进程的所有后代。
我标记了这个问题htop
,因为我最近经常使用这个实用程序,如果有一种简单的方法来杀死里面的进程树htop
(比仅仅选择子树中的所有进程更好)那就太酷了。
答案1
htop 中早就有此功能,但直到 2018 年手册中才有此功能:按下 键c
选择当前突出显示的进程及其所有子进程。然后,适用于选定进程的操作(例如使用 键终止进程k
)将适用于该进程及其子进程。
但这不是原子性的。如果在您按下按钮c
和内核杀死所有进程之间产生了新的子进程,它们将不会被杀死,并且很可能最终会重新附加到 init 进程。这是因为 htop 会循环选中的进程并逐个杀死它们。
我有提出了一个补丁不久前,我们向 htop 添加了原子组终止功能,但该实现还未获得足够的共识,因此无法将其合并。有了它,就可以从 htop 中原子地终止整个进程组。这与终止整个树并不完全相同,但据我所知,内核不提供任何原子地终止任意树的方法。
答案2
这应该对你有帮助!
pkill -TERM -P `PID`
答案3
使用htop
,您可以用来F5显示进程树。
如果您选择要终止的树顶部的进程,然后按下,F9它将Enter一次性关闭该进程和整个进程树。
在下面的屏幕截图中,此操作将导致 Chrome 和所有子进程关闭。
答案4
我尝试过这个,它对我有用
通过 top 或 Htop 获取 PID 进程 ID(使用 Htop 磁带F4写入进程名称然后F5获取树)
使用此命令对我有用
kill -TERM pid