最近工作中,需要对开发的程序进行性能测试,记录该进程的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

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

./process_monitor.sh test

Logo

更多推荐