获取进程cpu占用并保存到log中的脚本

最近工作中,需要对开发的程序进行性能测试,记录该进程的cpu、磁盘占用的等信息,并能够将该信息保存到文件中,便于后续查询和分析,于是编写了个脚本,适应linux系统,验证环境为ubuntu。

获取进程的pid信息指令为:

#name为进程的名称
pid=$(pidof name)
之前的博客里面有写道查询进程的信息指令为:

#pid为进程的id
top -p pid
单次信息输入到文件中(信息会覆盖),也可使用下面的指令:

#name为进程的名称
top -n 1 -b |grep -E name >status_monitor$(date -d “today” +“%Y%m%d_%H%M%S”).txt
后面考虑到更适用,将定时进行查询,完整的脚本如下:

#!/bin/bash
#输出到status_monitor.txt文件中,信息追加,非覆盖
#获取进程名称,外部输入
process=$1
#获取对应进程的pid
pid=$(pidof $process)
#写入相关提示信息
echo $process $pid >>status_monitor.txt
echo "  PID     USER      PR   NI    VIRT    RES    SHR  S  %CPU %MEM     TIME+   COMMAND" >>status_monitor.txt
#周期性查询信息并追加到status_monitor.txt文件中
while true
do
top -bn1 -n 1 -p $pid | tail -1 >>status_monitor.txt
#top -n 1 -b |grep -E $process >>status_monitor.txt
#sleep后面的数字单位为秒,下面为30s查询一次
sleep 30
done

修改定制化了一个脚本:

#!/bin/bash
#输入:进程名称
#输出:进程名称对应pid的top信息,输出到logFileName文件中,信息追加,非覆盖
#使用方法:./GetTopInfo.sh processName
#获取进程名称,外部输入
process=$1
#log文件名称
logFileName="status_monitor_"$(date -d "today" +"%Y%m%d_%H%M%S")".txt"
echo "log file:" ${logFileName}
#获取对应进程的pid
pid=$(pidof $process)
echo "process name:" ${process} ",pid:" ${pid}
#写入相关提示信息
echo $process $pid >>${logFileName}
echo "  PID     USER      PR   NI    VIRT    RES    SHR  S  %CPU %MEM     TIME+   COMMAND" >>${logFileName}
#周期性查询信息并追加到logFileName文件中
while true
do
top -bn1 -n 1 -p $pid | tail -1 >>${logFileName}
#top -n 1 -b |grep -E $process >>status_monitor.txt
#sleep后面的数字单位为秒,下面为2s查询一次
sleep 2
done

若该脚本保存为process_monitor.sh,监测test进程时,使用如下指令:

./process_monitor.sh test
————————————————
版权声明:本文为CSDN博主「浪小满」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/langxm2006/article/details/123011323

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值