<分区>
我需要编写脚本来返回文件,其中包含指定进程在给定时间段内的 cpu 和内存使用信息。 当我使用 ps -p pid 时,我只使用一个 cpu 内核,而当我使用 top 时,我得到二进制文件作为输出。我尝试了下一个:
while :;
top -n 1 -p pid | awk '{ print $9" "$10 }'
sleep 10;
done
<分区>
我需要编写脚本来返回文件,其中包含指定进程在给定时间段内的 cpu 和内存使用信息。 当我使用 ps -p pid 时,我只使用一个 cpu 内核,而当我使用 top 时,我得到二进制文件作为输出。我尝试了下一个:
while :;
top -n 1 -p pid | awk '{ print $9" "$10 }'
sleep 10;
done
最佳答案
内核为您的进程提供的信息位于/proc 文件系统中。首先,您需要解析这两个文件以获得脚本的相关数据
/过程/(pid)/状态
/proc/(pid)/stat
This线程详细描述了获取此 CPU 数据,因此我不会在这里。
我认为您会发现的问题是进程的 CPU 使用率并未分解为系统上可用的各种内核,而是汇总为一个接近 100% *(内核数)的数字。最接近这个的是顶部的“最后使用的处理器”列(选项 f,J),尽管这很难解决您的问题。 this 中的分析工具线程可能是最终答案。
不知道你的环境和需求;然而,一个解决方案可以只运行在机器上隔离的进程,然后在系统级别收集每个内核的 CPU 使用率,松散地代表进程需求。
关于linux - 用于内存和 CPU 使用的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661319/