监视脚本不输出任何内容

时间:2016-01-21 23:04:43

标签: shell monitoring solaris monitor

任何人都可以告诉我这个剧本有什么问题,它不起作用。当我运行它时,屏幕上没有输出/错误。

该脚本用于监视日志文件以检查其中一列的值,如果超过20,则会回显一条消息。

#!/bin/bash

while true ; do

COUNT=`tail -f /monitoring/log.20160121|cut -d" " -f39`

echo $COUNT

if [ $COUNT -gt 20 ] ;then

echo "Count is high"

break

fi

sleep 10

done

1 个答案:

答案 0 :(得分:3)

tail -f没有退出,因此您的脚本会卡在那里。我假设你只对日志的最后一行感兴趣; tail -n 1就是这么做的。

其他要点:

  • 缩进:不确定在复制粘贴时丢失了多少,但正确的缩进会大大提高代码的可读性
  • 变量名称:不建议使用所有大写变量名称,因为它们可能与保留(环境)变量名称冲突
  • 不鼓励使用反引号(` `
  • 命令替换,并且首选$( )形式;例如,嵌套更容易
  • 由于您正在使用Bash,因此您可以使用(( )) 条件构造,它更适合比较数字而不是[ ]

合:

#!/bin/bash

while true; do
    count=$(tail -n 1 /monitoring/log.20160121 | cut -d " " -f 39)

    echo $count

    if (( count > 20 )); then
        echo "Count is high"
        break
    fi

    sleep 10

done