【问题标题】:CPU % usage of all pid [duplicate]所有pid的CPU百分比使用率[重复]
【发布时间】:2023-03-19 00:05:02
【问题描述】:
在不知道任何程序名称的情况下,我无法获得所有 pid 的 CPU% 使用率。
我觉得我已经接近解决方案了,这就是我目前所做的:
for line in $(pgrep -f chrome); \
do echo -n $line" - "; \
ps -p $line -o %cpu | sed -n 2p | sed 's/ //'; done
在这个例子中,我只获得了所有的 chrome pid.. 在下一步我想要所有正在执行的 pid。
【问题讨论】:
标签:
linux
bash
shell
cpu-usage
pid
【解决方案1】:
您可以单独使用top 命令轻松完成此操作。
要按 CPU 百分比(降序)排序,您可以使用top -o -cpu
【解决方案2】:
如果您出于某种原因不想使用top,我可以考虑其他几种方法。
> ps -e -o "%p-%C"
或者,如果您想在脚本中执行此操作,例如(或者可以再次解析 ps 或检查 /proc/pid/stat 以了解 CPU 使用情况)
#!/bin/bash
shopt -s extglob
for line in /proc/+([0-9]); do
echo -n "${line##*/}- "
ps -p "${line##*/}" -o %cpu | sed -n 2p | sed 's/ //'
done
在哪里
-
shopt -s extglob 打开bash 中的扩展文件通配符
-
+([0-9]) 匹配任何包含 1 个或多个数字的文件
-
${line##*/} 删除之前的所有内容,包括最后一个 / 字符