トップに戻る 正規表現名を使用してプロセスを監視するには?

トップに戻る 正規表現名を使用してプロセスを監視するには?

私は複数のプロセスを監視するために '#top -p 22055,21995'を使用しますが、そのほとんどはfwk *、つまりfwk3_dev、fwk5_devで始まります。

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                        
22055 admin      0 -20  832m 302m  41m S   20  2.5  14973:53 fwk3_dev                                                                                       
21995 admin      0 -20  834m 304m  41m S   14  2.6  10179:55 fwk5_dev 

プロセスfwk *の正規表現名を使用して監視する方法 "fwk"で始まるすべてのプロセスを意味しますか?

答え1

topそれ自体はこれを行いませんが、topバッチモード(-bオプション)で実行される単純なシェルスクリプトを作成できます。それgrepとループを使用してください。インタラクティブではありません。

例えば

while :; do clear; top -b -n 1 |grep ' fwk' ;sleep 1; done

grepオプションが与えられると、正規表現は実際に認識されます-E。ただし、あなたの例は、前にスペースと「fwk」のみを使用して処理できます(同じ名前を持つユーザーがいない限り)。

一部のバージョンtop-dバッチモードで一度だけ実行するには、他のオプション(たとえば)が必要な場合があります。

答え2

# first generate a comma-separated list of matching PIDs
pids=$(ps a -o pid,args | awk '/[f]wk/ {print $1}' | xargs | sed -e 's/ /,/g')
# then run top with that list
top -p $pids

注:fwk*リストの作成と実行の間の短時間でプロセスが開始された場合、topそのプロセスは表示に含まれません。

関連情報