トップシェル内のプロセスツリーをよく見ることができます。たとえば、終了したいジョブに送信する信号をタップしてから、選択してF9 (KILL)
プロセスを終了できます。15 SIGTERM
ただし、これにより一度に1つのプロセスしか終了できません。プロセスツリー全体を終了する方法はありますかhtop
?
答え1
からman htop
:
対話型コマンド
スペース プロセスを表示または表示解除します。複数のプロセスで動作できるコマンド(「kill」など)は、表示されているプロセスのリストに適用されます。、現在強調表示されているものの代わりに。
ゆう すべてのプロセスのタグを解除します(スペースバーとして追加されたすべてのタグを削除します)。
F9、K 「キル」プロセス:メニューで選択した信号をプロセスまたはプロセスグループに送信します。プロセスが表示されると、表示されたすべてのプロセスに信号が送信されます。 フラグがない場合は、現在選択されているプロセスに送信されます。
正確にあなたが探している答えではありませんが、近いです。 killを使用してプロセスグループまたはサブプロセスを削除することもできます。以下を参照してください。
https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes
答え2
そのような機能は長い間ありましたが、2018年までにマニュアルから消えました。このc
キーを押すと、現在強調表示されているプロセスとすべての子プロセスが選択されます。その後、選択したプロセスに適用されるアクション(キーを使用した終了などk
)がそのプロセスとその子プロセスに適用されます。
しかし、それは原子的ではありません。ボタンを押した時点とカーネルがすべてのプロセスを終了する間に新しい子プロセスが作成されると、そのプロセスは終了せず、c
最終的にinitプロセスに再接続する可能性が高くなります。これは、htopがプロセスを繰り返しながら1つずつ終了するためです。
私は持っていますパッチを提案したAtomic group killerはしばらく前に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.