【发布时间】:2016-12-12 18:47:29
【问题描述】:
我想计算 Linux 中给定程序的 CPU 使用率。假设我想计算 oracle 使用了多少 CPU。当我做ps -elf | grep oracle 时,我得到了多个进程。如何获得累积结果。
【问题讨论】:
我想计算 Linux 中给定程序的 CPU 使用率。假设我想计算 oracle 使用了多少 CPU。当我做ps -elf | grep oracle 时,我得到了多个进程。如何获得累积结果。
【问题讨论】:
你不能做简单的ps -ef|grep oracle,因为-ef会输出所有进程的完整信息,包括命令路径。如果你有任何路径包含字符串oracle(在这种情况下),它会被选中,最后会导致你的计算不正确。
我会使用pgrep 和ps 来挑选您想要的正确进程,并仅列出 CPU 使用率,最后求和:
ps -fho' %C' -p $(pgrep -d, oracle )|awk '{s+=($0+0)}END{printf "CPU Usage:%.2f%%",s}'
pgrep -d, oracle 将列出名称包含oracle 的进程;如果您确定要搜索的进程名称,您可以使用-x 进行精确匹配。这将以 csv 格式输出所有 pid,例如 123,234
ps -fho '%C' -p '123,234' 将只输出给定 pid 的 CPU 使用率,不带标题,一行中的每个使用百分比
最终的 awk 脚本会将值相加并打印。输出应该看起来像
CPU Usage:xx.xx%
【讨论】: