我想监视特定进程的 CPU 使用情况、磁盘读/写使用情况,例如./myprocess
。
监视 CPUtop
命令似乎是一个不错的选择,而读取和写入命令iotop
似乎是一个方便的选择。
例如,为了监控每秒的读/写,我使用命令iotop -tbod1 | grep "myprocess"
。
我的困难是我只想存储三个变量,即读/秒、写/秒、CPU 使用率/秒。您能帮我编写一个脚本,将上述三个变量的输出组合起来top
并iotop
存储到日志文件中吗?
谢谢!
答案1
怎么样PID统计?。你尝试过吗?您可能需要要监视的进程的 Pid,但这应该可以通过命令ps
和一些简单的awk
操作轻松获得。
它是软件包的一部分sysstat
,你可以在基于 .deb 的系统中通过输入以下命令进行安装apt-get install sysstat
答案2
您可以尝试使用prtstat( sudo apt-get install psmisc
):
watch -n1 prtstat <PID> | tee mylog.log
它每秒都会转储进程统计信息。如果您有兴趣解析这些数据,请使用原始版本 (-r)。
例如,如果您想要 utime,您可以将上面的命令扩展为:
prtstat -r 30557 | grep -w utime | awk '{print $4}'
答案3
您可以使用奥德里亚对于此任务:
audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'
这会将延迟设置为1二、监控我的进程并打印当前的中央处理器(字段 7),读取字节/秒(字段 28)和写入字节/秒(字段 32)。这里的读/写计数器不包括缓存字节,如果您想包含它们,请选择字段26和30反而。
如果需要,audria 还能够执行您的流程,从一开始就对其进行监控。您还可以选择较短的时间间隔或指定要监视的多个 PID。
答案4
/proc/$PID/status
您可以尝试定期查看内容;这应该会为您提供大量您正在寻找的信息。