htop を使用してプロセスとそのすべての子プロセスを一時停止するにはどうすればよいですか?

htop を使用してプロセスとそのすべての子プロセスを一時停止するにはどうすればよいですか?

ファイルのインデックス作成に使用していますrecollが、都合の悪いときに起動してしまいます。

F5 を使用しhtopてビューをツリー ビューに変更し、プロセス リストをフィルターすると、マスター プロセスが実行中であり、その下に子プロセスが表示されます。終了オプションを選択するために F9 を押すと、SIGTERMオプションに応答しないようなので、オプションを使用する必要がありますSIGKILL

親プロセスとそのすべての子プロセスを完全に強制終了するのではなく、一時停止または停止するオプションはありますか?

答え1

バージョン以降2.0.02016年にリリース) の場合、 を押すcと、プロセスとその子にタグを付けることができます。これは、 に表示される組み込みヘルプに記載されていますh

次に、 を押すとk、タグ付けされたプロセスに信号を送信できます。選択可能なすべての信号のリストが表示されます。

答え2

信号を送信するSIGTSTPか、または次のいずれかを選択できますSIGSTOP

  • 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プロセスps -o pid,ppid,pgid,comm ww | grep -v recollグループ内に他のプロセスがあるかどうかを確認できます。htop にはプロセス グループへのインターフェイスはありません。

すべてのプロセスが と呼ばれる場合recoll、より簡単な方法は、名前でプロセスをフィルタリングすることです。htop で filter コマンドを使用すると、強制終了するプロセスに簡単にタグを付けることができます。コマンド ラインで を実行して、一致するプロセスをps $(pgrep recoll)一覧表示します。一覧に問題がなければ、 を実行してpkill -STOP recollそれらのプロセスを一時停止します。

関連情報