统计某个进程的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 redis-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}
}
统计 结果