如果平均负载大于10,我需要提醒。
如果我的awk命令返回一个整数,我可以这样做:
declare -i MAX_LOAD=10
declare -i L1=`cat /proc/loadavg | awk {'print $1'}`
if [ $L1 -gt $MAX_LOAD ]
then
echo "Alert"
fi
但是它在L1中返回浮点值(例如2.35)。
在这种情况下,如何比较这些值?
由于您已经在使用awk,所以最简单的方法可能也是在该语言中进行浮点比较:
MAX_LOAD=10.0
if ! </proc/loadavg awk -vmax_load=$MAX_LOAD '{ exit $1 > max_load }'
then
echo Alert
fi
请注意,这有一些棘手的问题:!
操作员撤消测试。这是必需的,因为awk中的布尔表达式和该if
构造接收值的状态码具有相反的含义。将<
被用于指导文件/proc/loadavg
为awk的标准输入。使用调用awk会将-vmax_load=$MAX_LOAD
awk变量设置max_load
为shell变量的值MAX_LOAD
。
在您的特定情况下,由于MAX_LOAD是整数,并且由于您正在读取文件中的第一个浮点数,因此临时解决方案是:
if [ $(</proc/loadavg cut -f1 -d.) -gt $MAX_LOAD ] ...
的调用cut
将提取中第一个数字的整数部分/proc/loadavg
。但是,如果上述任何假设变为错误,该想法就会崩溃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句