htopにプロセスとその子孫プロセスのみを表示する方法は?


10

上のプロセスとその子プロセスのみを監視したいhtop。親プロセスの名前でフィルタリングすると、親プロセスのみがリストされ、その子はリストされません。どうすれば子プロセスも表示できますか?

回答:


8

Linuxでは、次のことができます。

htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`

$PIDルートプロセスはどこですか。これは次のように機能します。

  1. 必要なプロセスのリストは、PIDとともにリストするオプションをpstree使用して、で取得され-pます。
  2. 出力は、正規表現(ここでは\((\d+)\))を使用してPIDを取得し、コンマで区切って出力するPerlスクリプトにパイプ処理されます。
  3. このリストはの引数として提供されますhtop -p

Mac OSなどの他のOSでは、PIDを取得する正規表現を適合させる必要がある場合があります。

注:残念ながら、後で生成される新しい子でリストを更新することはhtopできません。一度実行されると、他に何もできないためです。これはhtop(現在のバージョン:2.0.2)の制限です。


$PIDプロセスの名前にすることも、IDにする必要がありますか?
becko

@becko $PIDはpidである必要がありますが、を使用してプロセスの名前からIDを取得できますpgrep
vinc17 2015

5
新しい子供がスポーンしてもこれは更新されません...私のtmuxセッションでのものだけを監視するためにこのような
sth

@black_puppydog私も!
becko 16

MacOSでpstreeの自作から:htop -p `pstree -p $PID | perl -ne 'push @t, /--- (\d+) /g; END { print join ",", @t }'`
jpsim

0
htop -p $(ps -ef | awk -v proc=15305 '$3 == proc { cnt++;if (cnt == 1) { printf "%s",$2 } else { printf ",%s",$2 } }')

awkを使用して、ps -efの出力からプロセスIDのコンマ区切りリストを作成し、親プロセスIDをprocとして渡して、これをhtop -pに渡します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.