如果我top -p <myPID> -n 1
使用宽度不够的终端运行,则输出中会省略 CPU 利用率 %。当尝试通过 bash 脚本查找进程的 CPU 利用率时,这是一个大问题,因为如果运行脚本的终端不够宽,则脚本将无法工作。
ps -oe pcpu,pid,cmd
会给我总的平均CPU,但不是运行利用率。
是否有一个命令可以用来获取不依赖于终端宽度的进程的当前 cpu 利用率?
答案1
这系统统计包包括 mpstat。跑步
mpstat 2 | awk '{print $11}'
给了我空闲时间百分比,这似乎与您想要的相反,因此您可能需要对 mpstat 输出做一些工作:
8 % mpstat 2 | awk '{print $11}'
%idle
100.00
99.50
100.00
100.00
100.00
100.00
我的 Slackware 11 系统上有 mpstat,但直到我出现之前它才出现在我的 Arch 系统上pacman -S sysstat
答案2
在脚本中,将 COLUMNS 环境变量设置得足够高以获得所需的输出。
export COLUMNS=100
top -p ...
您还可以更改 COLUMNS var 以便top
调用:
COLUMNS=100 top -p ...
答案3
您只需使用f
键即可调整显示的列。删除一些列并添加 CPU%。那时你应该能够看到它。
答案4
ps u -p <PID>
工作正常。你也可以尝试使用awk
它:
pid=16707; ps u -p $pid --no-heading | awk -v pid=${pid} -F" " '{print "CPU usage for "$11": "$3}'