使用终端杀死进程树?

使用终端杀死进程树?

有没有办法使用终端来杀死进程树?

通过杀死进程树,我的意思是杀死进程本身以及进程的所有后代。

我标记了这个问题htop,因为我最近经常使用这个实用程序,如果有一种简单的方法来杀死里面的进程树htop(比仅仅选择子树中的所有进程更好)那就太酷了。

答案1

htop 中早就有此功能,但直到 2018 年手册中才有此功能:按下 键c选择当前突出显示的进程及其所有子进程。然后,适用于选定进程的操作(例如使用 键终止进程k)将适用于该进程及其子进程。

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

我有提出了一个补丁不久前,我们向 htop 添加了原子组终止功能,但该实现还未获得足够的共识,因此无法将其合并。有了它,就可以从 htop 中原子地终止整个进程组。这与终止整个树并不完全相同,但据我所知,内核不提供任何原子地终止任意树的方法。

答案2

这应该对你有帮助!

pkill -TERM -P `PID`

答案3

使用htop,您可以用来F5显示进程树。

如果您选择要终止的树顶部的进程,然后按下,F9它将Enter一次性关闭该进程和整个进程树。

在下面的屏幕截图中,此操作将导致 Chrome 和所有子进程关闭。

在此处输入图片描述

答案4

我尝试过这个,它对我有用

  1. 通过 top 或 Htop 获取 PID 进程 ID(使用 Htop 磁带F4写入进程名称然后F5获取树)

  2. 使用此命令对我有用

    kill -TERM pid
    

相关内容