在进行服务器压力测试时候,不免需要监控服务器CPU、mem等项的增长情况,提供一个脚本可以监控这些内容,执行命令:
./ProcMonitor_SaveDir_Pid_Second.sh 结果保存目录 进程ID 监测多少秒
例如:监控ID为27164的进程600秒,并将结果保存在脚本所在目录下的160m目录
./ProcMonitor_SaveDir_Pid_Second.sh 160m 27164 600
- ProcMonitor_SaveDir_Pid_Second.sh内容如下:
#!/bin/bash
#结果保存目录
mkdir $1
echo "SaveDir=$1"
#进程ID
echo "pid=$2"
#监测多少秒
echo "TotalSecond=$3"
#while true
#do
#******************************************************************************************************
#pidstat主要用于监控全部或指定进程占用系统资源的情况,
#如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,
#之后运行pidstat将显示自上次运行该命令以后的统计信息。
#用户可以通过指定统计的次数和时间来获得所需的统计信息。
#*****************************************************************************************************
#******************************************************************************************************
#使用-r选项,pidstat将显示各活动进程的内存使用统计:
#minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
#majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,
#这样的page fault为major page fault,一般在内存使用紧张时产生
#VSZ: 该进程使用的虚拟内存(以kB为单位)
#RSS: 该进程使用的物理内存(以kB为单位)
#%MEM: 该进程使用内存的百分比
#Command: 拉起进程对应的命令
#******************************************************************************************************
pidstat -r -p $2 1 $3 >>$1/mem_$2.txt &
#------------------------------------------------------------------------------------------------------
#******************************************************************************************************
#%usr: 进程在用户态运行所占cpu时间比率
#%system: 进程在内核态运行所占cpu时间比率
#%CPU: 进程运行所占cpu时间比率
#CPU: 指示进程在哪个核运行
#Command: 拉起进程对应的命令
#******************************************************************************************************
pidstat -u -p $2 1 $3 >>$1/cpu_$2.txt &
#------------------------------------------------------------------------------------------------------
#******************************************************************************************************
#使用-d选项,我们可以查看进程IO的统计信息:
#kB_rd/s - 任务从硬盘上的读取速度(kb)
#kB_wr/s - 任务向硬盘中的写入速度(kb)
#kB_ccwr/s - 任务写入磁盘被取消的速率(kb)
#******************************************************************************************************
pidstat -d -p $2 1 $3 >>$1/IO_$2.txt &
#------------------------------------------------------------------------------------------------------
#******************************************************************************************************
#UID
#TGID:------主线程ID
#TID:-------线程ID
#%guest
#%usr: -----进程在用户态运行所占cpu时间比率
#%system: --进程在内核态运行所占cpu时间比率
#%CPU: -----进程运行所占cpu时间比率
#CPU: ------指示进程在哪个核运行
#Command: --拉起进程对应的命令
#******************************************************************************************************
pidstat -t -p $2 >>$1/Threads_$2.txt &
#------------------------------------------------------------------------------------------------------
#******************************************************************************************************
#IFACE:LAN接口
#rxpck/s:每秒钟接收的数据包
#txpck/s:每秒钟发送的数据包
#rxbyt/s:每秒钟接收的字节数
#txbyt/s:每秒钟发送的字节数
#rxcmp/s:每秒钟接收的压缩数据包
#txcmp/s:每秒钟发送的压缩数据包
#rxmcst/s:每秒钟接收的多播数据包
#******************************************************************************************************
sar -n DEV 1 $3 >>$1/liuliang.txt &
top -b -n $3 -p $2 |grep $2 >>$1/top_$2.txt &
sleep $3
#done