用到的命令:
-
mpstat
-
pidstat
-
ps
-
awk
-
grep
代码:
#mpstat
cpu_usr=`mpstat|awk '{printf("%.0f\n",$4)}'|sed -n '4p'`
cpu_sys=`mpstat|awk '{printf("%.0f\n",$6)}'|sed -n '4p'`
cpu_iowait=`mpstat|awk '{printf("%.0f\n",$7)}'|sed -n '4p'`
cpu_soft=`mpstat|awk '{printf("%.0f\n",$9)}'|sed -n '4p'`
cpu_steal=`mpstat|awk '{printf("%.0f\n",$10)}'|sed -n '4p'`
cpu_idle=`mpstat|awk '{printf("%.0f\n",$13)}'|sed -n '4p'`
echo "____________________"
echo "____________________"
echo mpstat检查结果:cpu空闲:$cpu_idle,,,,,cpu_usr:$cpu_usr,cpu_sys:$cpu_sys,iowait:$cpu_iowait,steal:$cpu_steal,软中断:$cpu_soft
echo "____________________"
echo "____________________"
if (($cpu_idle < 20))
then
echo "cpu空闲:$cpu_idle 较低"
fi
echo "____________________"
echo "____________________"
echo "使用pidstat检查性能"#使用pidstat提取CPU高的进程
pidstatcpu="pidstat|grep UID|head -1;pidstat -u 5 1|grep Average|sort -rn -k 8|head"
#使用pidstat提取内存高的进程
pidstatmemory="pidstat|grep UID|head -1;pidstat -r 5 1|grep Average|sort -rn -k 8|head "
#使用pidstat提取IO Reade高的进程
pidstatIOR="pidstat|grep UID|head -1;pidstat -d 5 1|grep Average|sort -rn -k 4|head "
#使用pidstat提取IO Write高的进程
pidstatIOW="pidstat|grep UID|head -1;pidstat -d 5 1|grep Average|sort -rn -k 5|head "
echo "手动复制执行以下步骤或继续执行自动检查"
echo "检查cpu:$pidstatcpu,请输入1"
echo "检查内存:$pidstatmemory,请输入2"
echo "检查IO读:$pidstatIOR,请输入3"
echo "检查IO写: $pidstatIOW,请输入4"
read gocheckwhat
if [[ "$gocheckwhat" == 1 ]]; then
eval $pidstatcpu
elif [[ "$gocheckwhat" == 2 ]]; then
eval $pidstatmemory
elif [[ "$gocheckwhat" == 3 ]]; then
eval $pidstatIOR
elif [[ "$gocheckwhat" == 4 ]]; then
eval $pidstatIOW
else "输入有误"
fi
echo "-------------------------"
echo "-------------------------"
echo "请输入要检查的具体PID"
read pid
checkpidcmd="ps aux|head -1;ps aux|grep $pid|grep -v grep|grep -v PID"
eval $checkpidcmd