2013-11-20 41 views
0

這是我想要做的。我想趕上消費PID最多的10個CPU,並找到程序名稱。然後在文件中顯示程序名稱和%CPU。BASH,在循環中讀取文件中的第一列

CPU_per=$(sar 1 1 | tail -1 | awk '{print 100 - $5}') 
echo $CPU_per 
if [ $CPU_per -gt 80 ] 

    (prstat -u user -n 900 0 1 | grep Type | head -n 10 | awk '{print $1 " " $9}') >> /tmp/PID 

for i in $(cat /tmp/PID) 
do   
    (awk '{print $1 } | ps -p $PID -o args | tail -1 | cut -d \ -f 2) 

我想輸出看起來像

Process %CPU 
Program1 5% 
Program2 9% 
Program3 12% 
+2

歡迎來到Stack Overflow。請儘快閱讀[關於]頁面。你似乎發佈了一個奇怪的僞代碼,這是不推薦的。至少,它不是語法上正確的shell腳本。您在循環體中也缺少一個引號,並且您不清楚是否在子shell中運行該命令。您可以在'-p'選項中請求以逗號分隔的PID列表到'ps' –

+0

我正在使用Linux,並且我認爲Linux上沒有'prstat'命令。因此,如果您可以發佈'prstat -u user -n 900 0 1'的輸出 –

回答

1

喜歡這個?

echo -e "COMMAND\t\t%CPU"; ps -eo "%c %C%%" --sort pcpu | tail -n10