答案1
如果你需要一个可以做到这一点的工具,并经常更新信息htop
,可能没有答案。但是,如果您愿意执行命令并获取结果(作为快照),则有几个选项。
一种方法是处理“基本命令”的输出ps
$ ps -eo user,pid,ppid,pcpu,command
处理信息有两种方法。
简单的方法
grep
使用给定命令的所有行,并总结pcpu
用法。例如,对于firefox
这个简单版本(您不需要pid,ppid
)
$ ps -eo pcpu,command --sort -pcpu | grep firefox | awk '{p=$1 ; sum +=p} END {print sum}'
该方法得出的结果可能与实际目标不符,原因是:
- 两个单独的进程具有相同的名称,高估了实际结果。有时您可能知道自己是否处于这种情况,如果是的话,可能不是一个问题。
- 子进程不受重视
grep
(我不确定这是否会发生),低估了实际结果。
以下方法可以解决这两个潜在问题。
完整方法
浏览进程树,从您感兴趣的目标进程的 PID(进程 ID,例如 10000)开始。然后,您将浏览grep
所有其他具有 PPID(父进程 ID)10000 的进程,并记录它们的 PID。递归获取整个树,并将 的所有值相加pcpu
。
您必须为此编写一个小程序。我不确定此金额中包含的某些项目是否不包括在简单的方法多于。
笔记关于“基本命令”:
- 列出
command
(或cmd
,args
)很重要。列comm
列出了进程名称,可能有所不同(请参阅这)。例如,firefox
启动许多Web Content
进程,并且这挑逗 优秀的工具atop
+ P,例如 - 对于其他有趣的分析,您可以将其添加
,size,%mem
为要显示和处理的列。另请参阅下文。
内存方面的资源使用情况
有一场广泛的“讨论”这里,适用于内存使用情况。我不确定那里的任何说法是否适用于任何相似的方式(甚至考虑到 CPU 使用率与内存使用率的差异)。
有关的:
答案2
我现在偶然发现gotop
默认视图中提供了该功能。
安装说明位于https://github.com/xxxserxxx/gotop
curl https://raw.githubusercontent.com/xxxserxxx/gotop/master/scripts/download.sh | bash && chmod +x gotop && sudo mv gotop /usr/local/bin/
由于这会将远程源传送到您的 shell,因此请确保先验证链接的内容。
启动后它看起来像这样。右下角的进程框总结了每个可执行文件的 CPU 负载和内存使用情况。
答案3
根据 sancho.s 的回答,这对我来说足够公平了:
watch -n 1 'ps -eo pcpu,command --sort -pcpu | grep teams | awk "{p=\$1 ; sum +=p} END {print sum}"'
它每秒打印一次所有团队进程的 CPU 负载(附注:对我来说,它总是在 78% 左右,即使是空闲状态,这很疯狂,但与此无关)
或者我们可以生成一段时间内的 CPU 负载日志:
while sleep 1; do echo -n `date +"%H:%M:%S;" `; ps -eo pcpu,command --sort -pcpu | grep teams | awk "{p=\$1 ; sum +=p} END {print sum}"; done