top 如何使用正規表示式名稱監視進程?

top 如何使用正規表示式名稱監視進程?

我用 ie '#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本身不會執行此操作,但您可以編寫一個簡單的 shell 腳本,該腳本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,它們將不會包含在顯示中。

相關內容