2013-11-20 40 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