我是脚本新手,我知道下面的问题非常简单,但谷歌没有得到任何东西:( ..请帮忙
sar命令给出了以下输出,
root@virt01:~# sar 1 1
Linux 3.19.0-42-generic (virt01.ubuntu.com) 13/02/16 _x86_64_
(1 CPU)
12:19:55 CPU %user %nice %system %iowait %steal
%idle
12:19:56 all 0.00 0.00 0.00 0.00 0.00
100.00
Average: all 0.00 0.00 0.00 0.00 0.00
100.00
root@virt01:~#
只想知道如何检查特定值,例如:%iowait并在邮件超过50时发送邮件警报。
如果你能提供帮助,我们将不胜感激。
感谢。
答案 0 :(得分:0)
根据您的确切目标,我可以通过简单的管道设置解决您提出的问题。这个特殊的例子是脆弱的,所以按照适当的方式进行按摩,但是在给出sar的示例调用时会有效:
$ PERC=$(printf "%.0f" $(sar 1 1 | tail -1 | awk '{print $6'}))
$ [[ "$PERC" -ge 50 ]] && echo "IOwait% $PERC" | mail -s "iowait over 50%" -t "you@example.com"
件:
sar 1 1
- >你知道吗tail -1
- >只取最后一条“平均”线awk '{print $6'}
- >打印第6列,%IOwait 上述pipline导致某些百分比如“3.72”。但是,对于下一行,shell将需要一个整数,因此printf
需要救援:
printf "%.0f" "$PERC"
- >打印带有0位小数的浮点数,并根据需要进行舍入以下行说“如果超过50%执行邮件命令:
[[ "$PERC" -ge 50 ]]
- >如果大于50 &&
- >如果previous是真,则执行下一个命令echo "IOwait% $PERC" | mail -s "iowait over 50%" -t "you@example.com"
- >大多是自我解释,发送电子邮件。