使用shell脚本检查系统当前状况

195 阅读1分钟

用到的命令:

  • 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