「top」で特定のプロセスを選択する方法は?

「top」で特定のプロセスを選択する方法は?

プログラムのインスタンスが複数ある場合、実行すると次のようにpidof programなります。

`1 2 3`

top -pカンマで区切られた引数を受け入れます1, 2, 3

これはこれがうまくtop -p `pidof program`いかないことを意味します。

    top: unknown argument '1'
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

これを行う方法を教えてください。私はawk、sedなどに精通していません。

答え1

sedこのような単純なものに代わるものは次のとおりですtr

top -p $(pidof program | tr ' ' ',')

trさまざまな量のスペースも簡単に処理できます。

tr -s ' ' ','

また、利用可能なものがあればpgrepここでうまく機能することができます。

top -p $(pgrep -d , program)

コンマはパラメータ(区切り文字)なので、-dとの間にスペースを残してください。,

また、pgrepは "program"のすべての結果を返すので、 "program-foo"というプロセスがある場合、その結果も返されます(したがってpgrepという名前が付けられます)。

答え2

sedあなたのものを次のように置き換えてください,

top -p $(pidof program | sed 's/ /, /g')

答え3

これは、複数のプログラムを監視するのに便利です。

top -p `pgrep -d, -f program1`, `pgrep -d, -f program2`

関連情報