加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

debian – Bash评价莫名其妙

发布时间:2020-12-15 18:30:11 所属栏目:安全 来源:网络整理
导读:当一个数字大于另一个数字时,我正在尝试让脚本执行某些操作,在这种情况下,当系统负载平均值超过定义的值时. 所有这些都与评估标准不同. 虽然我为某些站点构建了另一台服务器,但我正在努力保持apache排队,原因并不重要,但是这个脚本已经在负载平均值低于15且
当一个数字大于另一个数字时,我正在尝试让脚本执行某些操作,在这种情况下,当系统负载平均值超过定义的值时.

所有这些都与评估标准不同.

虽然我为某些站点构建了另一台服务器,但我正在努力保持apache排队,原因并不重要,但是这个脚本已经在负载平均值低于15且脚本打印出来的系统上进行了测试和测试:

“check is 4.68 and max is 15.00”DESpeite if条件告诉它如果check的值不大于max load则不打印任何东西,而不是.

我不是bash guru,我有胡子,但没有凉鞋,我尝试了各种不同风格的括号和引用,但我无法弄清楚为什么当$check小于$max_load时,这个脚本会打印任何东西.

这是在Debian 6,GNU bash,版本4.1.5(1)-release-(x86_64-pc-linux-gnu)

#!/bin/bash
check=`cat /proc/loadavg | sed 's/./ /' | awk '{print $2}'`
max_load='15.00';
high_load_log='/var/log/apache2/apache_high_load_restart.log';
apache_init='/etc/init.d/apache2';

if [[ $check > $max_load ]]; then
   echo " check is $check and max is $max_load";
   #$apache_init stop
   sleep 5;
   #$apache_init restart
   echo "$(date) : Apache Restart due to load of | $check |" >> $high_load_log;
fi

在负载大约为4的系统上,此脚本输出:

"check is 4.68 and max is 15.00"

有谁知道为什么?

任何帮助,以及良好的起动凉鞋的建议将不胜感激!

这不会起作用. > operator [[比较排序顺序,而不是值].所以….
$echo -e '4.68n15.00'|sort
15.00
4.68

…因为在1之后有4种,这意味着[[4.68] 15.00]]是真的.你不能使用-gt,因为这需要整数.

如果您只关心整数阈值,那就是简单的修复 – 在.处截断,使用-gt,然后就可以了.否则,请使用bc – 请参阅https://unix.stackexchange.com/questions/24721/how-to-compare-to-floating-point-number-in-a-shell-script

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读