统计某个进程的cpu和mem的增长情况

Linux 统计某个进程的cpu和mem的增长情况

·

使用top命令:

#top的用法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
#将进程以1s每次,更新3次,-b输出
top -d 1 -n 3 -b | grep -i -server
#使用awk 截取第九个 cpu展示的 字段
 top -d 1 -n 4 -b | grep -i redis-server | awk {'print $9'}

 


#使用awk 截取第九个 cpu展示的 字段

上面的grep信息不是实时统计的,想要获取即时的信息,就需要使用grep --line-buffered,使grep不缓存信息,直接输出:

 


取出相应pid


利用awk分割取出pid,cpu ,,服务名

perf_get(){
#定义变量
	local proc="$1"     # pid 进程名
	local recount="$2"  # 查询几秒内进程情况
	
	#判断
	[ -z "$proc"] && { echo "请输入进程"; return 1 ;}
	[ -z "$recount"] $$ recount=10 #10s内无响应 退出
	
	#使用top进行批处理
	top -d 1 -n $recount -b |
	#设置查询范围
	grep '^[0-9][0-9]' |
	#awk 截取 pid cpu 内存 服务名
	awk 'print $1,$9,$10,$NF}' |
	#实时取出数据,
	grep --line-buffered -i "$proc" |
	#分组统计打印。tab作为OFS进行输出
	awk 'BEGIN{OFS="t";print "CPU","MEM"}'  #输出表头
	{cpu+=$2;mem+=$3;print $1,$2,$3,$4;} #统计所有cpu 和内存的合计
	END{print "";print "avg:  ",cpu/NR,mem/NR} 
}

统计 结果

胜象大百科