我運行一個命令來嘗試列出 PID 及其 CPU 使用情況。我在用ps -ef
。
有沒有(更好的)方法來使用 來做到這一點top
?另外,我對我的發言有疑問awk
。我的變數$vGRP
是正規表示式。如何測試是否$2
在$vGRP
?如果是這樣,這可以切斷我的一個grep
電話。
我最初將其寫為“一行”,我可以將其貼到終端會話中,因此請原諒格式:
clear;
printf "Please enter process name: "; read vPNAME;
for i in $(pgrep "$vPNAME");
do vGRP="$vGRP$i|";
done;
vGRP="${vGRP::-1}";
printf "Seaching for processes: $vGRP\n PID\tUSAGE\n-------\t-------\n";
ps -ef | egrep "$vGRP" | egrep "$vPNAME" | awk '{print $2, "\t", $4 }';
vGRP=""; vPNAME="";
理想情況下,我想要一些更乾淨的東西,但我不太熟悉bash
,如果可能的話,我想awk
檢查字串中的欄位 2 vGRP
。
ps -ef | awk -v vGRP="$vGRP" '$vGRP~/$2/ {print $2, "\t", $4 }';
但是,這不提供輸出,因為我假設它awk
不會讀取外部變數。
答案1
顯然是重新發明輪子。
ps -o pid,pcpu -p $(pgrep "$vPNAME")