【问题标题】:Bash script to compare output current to 5 minutes ago将输出电流与 5 分钟前进行比较的 Bash 脚本
【发布时间】:2015-08-07 20:27:35
【问题描述】:

我需要在 bash 中编写一个脚本,该脚本从 rrd 文件中获取最后一个输出,如下所示:

#rrdtool lastupdate /home/usr/tmp/4880.rrd

输出有两列三行,我可以通过使用得到我想要的值

#rrdtool lastupdate /home/usr/tmp/4880.rrd | grep -v ^$ | grep -v ^$ | awk '{print $2}'

这给出了一个数字输出,例如 55600

现在我需要每 5 分钟运行一次,并将当前值与 5 分钟前的最后一个值进行比较,如果差异高于阈值,则触发另一个 bash 脚本的操作。

寻找如何完成这项工作的想法。

还可以使用 rrdtool lastupdate 来获取最后一个和第二个最后一个值,并在此 rrd 数据库每 300 秒(5 分钟)轮询一次时比较并在差异增加阈值时触发操作。

【问题讨论】:

    标签: bash shell rrdtool


    【解决方案1】:

    这样可以吗?

    THRESHOLD=100
    while true; do
      VALUE=`rrdtool lastupdate /home/usr/tmp/4880.rrd | grep -v ^$ | grep -v ^$ | awk '{print $2}'`
      if [ -n "$OLDVALUE" ]; then
        if [ $VALUE -gt `expr $OLDVALUE '+' $THRESHOLD` ] || [ "$VALUE" -lt `expr $OLDVALUE - $THRESHOLD` ]; then
          echo "Oh noez, values are too different!!! new $VALUE old $OLDVALUE"
        fi
      fi
      sleep 300
      OLDVALUE=$VALUE
    done
    

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 2021-01-09
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多