1
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 使用率。

4

2 回答 2

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
于 2013-03-04T16:40:17.570 回答
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 秒检查半分钟。

于 2013-06-12T17:11:37.280 回答