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


18

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などに慣れていません...

回答:


25

このsedような単純なものの代替手段はtr次のとおりです。

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

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

tr -s ' ' ','

また、利用可能な場合は、pgrepここでうまく機能できます。

top -p $(pgrep -d , program)

必ず間にスペースを残していることを確認してください-d,コンマとして引数(deliminatorを)されます。

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


複数のプログラムの場合top -p $(pgrep -d, "(nginx|mysql)" )
user2037659

6

sedあなたを置き換える,

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

3

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

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

より良い使用:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.