it-swarm-ja.tech

「トップ」で特定のプロセスを選択するには?

1つのプログラムに複数のインスタンスがある場合は、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などに慣れていません...

18
tshepang

このような単純なもののためのsedの代わりはtrです:

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

trは、可変数のスペースも簡単に処理できます。

tr -s ' ' ','

さらに、それが利用可能な場合、pgrepはここでうまく機能します。

top -p $(pgrep -d , program)

コンマが引数(区切り文字)であるため、-d,の間にスペースを必ず入れてください。

また、pgrepは「program」のすべての結果を返すため、「program-foo」というプロセスがある場合はこれも返されることに注意してください(したがって、pgrepという名前)。

25
Steven D

sedはを,に置き換えます:

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

これは、複数のプログラムを監視するのに適しています。

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