使用SAR命令查找cpu利用率的Shell脚本,如果使用率超过75%,则发送电子邮件

时间:2013-03-04 13:53:31

标签: bash shell unix

13:30:01          CPU     %user     %nice   %system   %iowait    %steal     %idle
13:40:01          all      0.56      1.21      0.69      1.64      0.00     95.89
Average:          all      0.63      1.25     11.10      7.48      0.00     79.55

这是sar命令的输出。我想从平均值添加%user和%system,如果超过75%,则向用户发送电子邮件。请帮助,如果有更好的方法来计算CPU使用率,请告诉我。

2 个答案:

答案 0 :(得分:1)

#!/bin/bash
saveIFS=$IFS
IFS=$' '
USAGE=( $( sar | tail -1 | cut -c20-29,40-49 ) )
IFS=$saveIFS
SUM=0
for (( CNTR=0; CNTR<${#USAGE[@]}; CNTR+=1 )); do
    FLOAT=( $( echo ${USAGE[$CNTR]} | tr ',' '.' ) )
    SUM=( $( echo "$SUM+$FLOAT" |bc  ) )
done
INT=${SUM/.*}
echo $INT
if [[ $INT == "" ]]; then
    INT=0
fi
if [ $INT -ge 75 ]; then
    mail -s "CPU usage is above 75%" mailbox@yourcompany.com < $INT
fi

答案 1 :(得分:0)

#!/bin/bash
TMPFILE=/tmp/CPUtmp
sar |awk '$1 == "Average:"{T=$3+$5; if (T > 75){print T}}' > $TMPFILE
if [ -s $TMPFILE ] ; then
  mail -s "CPU usage is above 75%" mailbox@yourcompany.com < $TMPFILE
fi

如果你想要当前使用,“sar 5 6”而不是“sar”将以5秒的间隔检查半分钟。