psrecord监控单个进程的cpu和内容实用情况

某些时候,我们需求有针对性的健康单个进程的cpu和内存使用情况,并且能自动绘制出折线图,这是用psrecord应该算是一个比较好的选择。

只要系统能访问pip,部署也相对比较简单

python3 -m pip install --upgrade pip

python3 -m pip install matplotlib

python3 -m pip install psrecord

使用方法

psrecord 290752 --log activity.txt --plot plot.png --interval 10 --include-children --duration 21600

290752 是我们要监控的进程ID

--log 指定输出的文本监控信息文件名

--plot指定绘制的折线图文件名

--interval指定采样间隔

--duration指定采样总时长,注意这里是总时长,不是采样个数

--include-children是否包含子进程,如果是多线程的程序,建议加上这个选项

默认终端模式下执行,使用Ctrl+C便可以结束监控,然后自动生成png图像

后台监控和停止操作

采集运行时间较长的进程信息时,我们更可能希望是在后台运行,然后在需要的时候结束,此时可以将监控指令写到shell中,然后通过nohup &的方式运行,注意命令里面无需添加&,如果有多个进程,就傻瓜式的多写几个shell,例如这样:

ps -ef | grep 3306 | grep -w mysqld | grep -v grep | head -1 | awk '{print $2}' | xargs -i psrecord {} --log 3306.txt --plot 3306.png --interval 60 --include-children

运行之后,如果需要人工控制停止时间,就发kill -2信号

ps -ef | grep -v grep | grep psrecord | awk '{print $2}' | xargs kill -2

上面提到不要在shell中使用&功能,因为这种方式执行shell拉起的监控任务,无法使用kill -2正常结束,也就意味着不能自动输出png图

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据