如何使用 htop 來掛起一個進程及其所有子進程?

如何使用 htop 來掛起一個進程及其所有子進程?

我用來recoll索引文件,但它在不合時宜的時候啟動了。

當我htop使用 F5 將視圖變更為樹視圖並過濾進程列表時,我看到一個主進程正在運行,其下有子進程。當我按 F9 選擇終止選項時,它似乎沒有響應該SIGTERM選項,因此我必須使用該SIGKILL選項。

是否可以選擇暫停或停止父進程及其所有子進程,而不是直接殺死它?

答案1

自版本以來2.0.02016年發布),您可以按c來標記進程及其子進程。上顯示的內建幫助中提到了這一點h

然後您可以k按 向標記的進程發送信號;您將看到所有可能的信號清單以供選擇。

答案2

您可以選擇發送信號SIGTSTPSIGSTOP

  • SIGTSTPCtrl: 是按+時發送的訊號Z。它將暫停和停止該進程,您可以使用bg(在後台恢復)或fg(恢復將其帶回前台)來恢復它。

  • SIGSTOP:簡單地停止該過程。無法忽視也無法阻止。只有當您向其發送信號時,該過程才會恢復SIGCONT

答案3

您可以按 來Space標記進程。 Kill 指令適用於所有標記的進程。

沒有簡單的方法來標記進程及其子進程,但樹視圖 ( t) 應連續列出它們。

根據 recoll 的運作方式,進程可能位於自己的位置行程群組。如果是,那麼您可以使用kill -STOP -1234將它們全部掛起,其中 1234 是進程組 ID(通常但不一定是群組中初始進程的進程 ID)。您可以使用ps -o pid,ppid,pgid,comm -C recoll, thenps -o pid,ppid,pgid,comm ww | grep -v recoll檢查進程組中是否還有其他進程。 Htop 沒有進程組的介面。

如果所有進程都被調用recoll,那麼更簡單的方法就是按名稱過濾進程。在htop中,使用filter命令,然後您可以輕鬆標記要殺死的進程。在命令列上運行ps $(pgrep recoll)以列出匹配的進程。如果您對清單感到滿意,請運行pkill -STOP recoll以暫停這些進程。

相關內容