杀死 top/htop 中的进程树

杀死 top/htop 中的进程树

顶部让我可以很好地看到 shell 内的进程树。我可以通过按F9 (KILL),然后选择15 SIGTERM要发送到要终止的作业的信号(例如 )来终止进程。

然而,这只能让我一次杀死一个进程。有没有办法使用 杀死完整的进程树htop

答案1

man htop

交互式命令

空间 标记或取消标记进程。然后,可以对多个进程进行操作的命令(例如“kill”)将应用于标记的进程列表,而不是当前突出显示的。

U 取消所有进程的标记(删除使用空格键添加的所有标记)。

F9、k “杀死”进程:将菜单中选择的信号发送到一个或一组进程。如果进程已标记,则将信号发送到所有标记的进程。 如果没有标记,则发送到当前选定的进程。

不完全是您正在寻找的答案,但很接近。您还可以使用kill来消除进程组或子进程,请参阅:

https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes

答案2

很长一段时间以来就有这样的功能,但直到 2018 年才从手册中消失:按下该c键可选择当前突出显示的进程及其所有子进程。然后,适用于选定进程的操作(例如使用密钥进行终止k)适用于该进程及其子进程。

但这不是原子的。如果在您按下按钮c和内核杀死所有进程之间产生了新的子进程,它们将不会被杀死,并且很可能最终会重新附加到 init 进程。这是因为 htop 正在循环选择进程并一一杀死它们。

我有提出了一个补丁不久前向 htop 添加了原子组杀死功能,但实现方式尚未达成共识,无法合并。有了它,就可以从 htop 以原子方式杀死整个进程组。这与杀死整棵树并不完全相同,但是据我所知,内核没有提供任何方法来自动杀死任意树。

答案3

来自 htop 联机帮助页:

F5, t 树视图:按亲子关系组织进程,并将它们之间的关系布置为树形。切换该键将在树和之前选择的排序视图之间切换。选择排序视图将退出树视图。

因此,请按 F5,然后您可能必须按“t”。这会让你杀死整棵树。

答案4

在 htop 中,按 来c标记进程树,然后k按 来终止。

       c    Tag  the  current process and its children. Commands that can operate on                                                                                                                                                                                                                                                                        
            multiple processes, like "kill", will then apply over the list of tagged                                                                                                                                                                                                                                                                        
            processes, instead of the currently highlighted one.   

相关内容