我希望使用/proc每秒钟找到特定进程的资源使用情况。这些资源包括CPU时间、磁盘使用和网络使用。我查看了/proc/pid/stat文件,但我不确定是否得到了所需的详细信息。我想要所有3种资源使用情况,并且我想每秒监视它们。
一些较新的内核有 /proc/<pid_of_process>/io
文件,记录了 IO 统计信息。尽管它在 man proc 中没有文档,但您可以自己尝试理解这些数字。
希望对您有所帮助。 Alex。
getrusage()
可以完成 CPU、内存和磁盘等操作。
man 2 getrusage
我不知道网络方面的。
不要认为有一种方法可以按进程基础获取磁盘和网络信息。
您能得到的最好的是全局磁盘和网络,以及每个进程的CPU时间。
所有文档都记录在man proc
中。
iotop
实用程序),但并非所有内核都支持。 - user149341您可以使用 SAR
-x 为给定进程报告统计信息。
更多详情请参见: http://www.linuxcommand.org/man_pages/sar1.html
示例: sar -u -r -b 1 -X PID | grep -v Average | grep -v Linux
-x
或-X
选项时,我只能看到minflt/s majflt/s %user %system nswap/s CPU
的统计信息,而没有磁盘或网络统计信息。例如,如果我还指定了-n DEV
以查看网络统计信息,则sar会给出单独的行和单独的标题。我在RHEL 5.7上进行了测试。 - haridsv解决这类问题的最佳方法是查找执行类似监控和报告功能的工具的源代码。虽然不能保证它们直接使用/proc,但它们会引导您找到有效的解决方案。 对于您的情况,可以考虑使用 top(1)、iotop(8) 和 nethogs(8)。
你可以使用 top
SYNOPSIS
top -hv|-bcHiOSs -d delay -n limit -u|U user -p PID -o champ -w [columns]
watch
。 - etuardu