統計某個進程的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}
}
統計 結果