プログラムのインスタンスが複数ある場合、実行すると次のように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`