Linux性能监控命令_pidstat & 统计进程信息
https://blog.csdn.net/m0_61066945/article/details/126568206
#!/bin/bash
Help(){
echo -e "Usage: $0 [ options ] [ <interval> [ <count> ] ]"
echo -e "\t -a: Monitoring all processes"
echo -e "\t -p{pid}: Specify the pid"
echo -e "\t -k: Kill pidstat"
}
Main(){
local log="`pwd`/logs"
[ ! -d ${log} ] && mkdir -p ${log}
[ "$1" == "p" ] && options="-p $2 $3 $4" || options="$1 $2"
# 输出CPU信息到logs/cpu.log
pidstat -u ${options} > ${log}/cpu.log &
# 输出内存信息到memory.log
pidstat -r ${options} > ${log}/memory.log &
# 输出磁盘读写到disk.log
pidstat -d ${options} > ${log}/disk.log &
# 上下文切换到context.log
pidstat -w ${options} > ${log}/context.log &
}
case $1 in
-a)
Main $2 $3
;;
-p)
Main p "$2" $3 $4
;;
-k)
ps -ef |grep "pidstat" |grep `whoami` |grep -v grep |awk '{print $2}' |xargs kill -9
;;
*)
Help
esac
意义:
同时监控CPU、内存、磁盘、上下文切换信息,输出到不同文件中
作用:
当某个时间段性能出现损耗,可以通过此脚本查看进程的使用情况
使用:
sh xxx.sh -a 1 86400 # xxx.sh表示脚本名,每1秒输出一次,共监控一天
sh xxx.sh -p 123,321 1 86400 # xxx.sh表示脚本名,-p指定单个或多个pid(多个使用逗号分隔),只监控指定的pid。每1秒输出一次,共监控一天
sh xxx.sh -k # 停止pidstat命令