所有pid的CPU使用率

12 浏览
0 Comments

所有pid的CPU使用率

我无法获得所有进程ID的CPU使用率,而不知道任何程序名称。

我觉得我离解决方案很近了,这是我至今所做的:

对于$(pgrep -f chrome)中的每一行;
    do echo -n $line" - ";
    ps -p $line -o %cpu | sed -n 2p | sed 's/ //'; done

在这个例子中,我只获得了所有chrome的进程ID。下一步,我想要获得所有正在执行的进程ID。

0
0 Comments

问题出现的原因:

出现该问题的原因是因为用户不想使用top命令,但是需要获取所有进程的CPU使用率。

解决方法:

解决该问题的方法有两种:

1. 使用ps命令获取所有进程的PID和CPU使用率:ps -e -o "%p-%C"。

2. 编写一个脚本来获取所有进程的CPU使用率,可以通过解析ps命令的输出或者检查/proc/pid/stat文件来获取CPU使用率。

下面是一个获取所有进程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]):匹配包含一个或多个数字的文件。

- ${line##*/}:去除文件路径,只保留文件名。

- ps -p "${line##*/}" -o %cpu:使用ps命令获取对应进程的CPU使用率。

- sed -n 2p:提取第二行的数据。

- sed 's/ //':去除空格。

通过使用以上方法,即可获取到所有进程的CPU使用率。

0
0 Comments

CPU % usage of all pid问题出现的原因是没有提到使用top命令来查看CPU使用率的方法。为了解决这个问题,可以使用top -o -cpu命令按CPU百分比降序排列。

0