用于查找不依赖于屏幕宽度的当前 CPU 利用率的 top 命令行替代方案是什么?

用于查找不依赖于屏幕宽度的当前 CPU 利用率的 top 命令行替代方案是什么?

如果我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}'

相关内容