我是shell脚本的新手,我已经搜索了很多关于这个问题的东西。但无法找到完美的解决方案。
问题是:这是一个带有“ERROR”,Pattern的日志监控代码 我们如何在unix脚本中创建TIMER。支持我有5分钟的计时器,时间每1秒继续减少。所以我想在一定条件下再次将计时器重置为5分钟(比如说ERROR发生的$ FREQUENCY大于ex2)。
#!/usr/bin/env bash
PATTERN='ERROR'
TIMER=300
FREQUENCY=2
while true;
do grep -i $PATTERN logfile > tmp_log
while [ $TIMER -gt 0 ]
do
sleep 1 &
printf " $TIMER \r" &
TIMER=$[$TIMER-1];
wait
done
if [[ $(wc -l <tmp_log) -ge $FREQUENCY ]]
then
TIMER=300
echo $TIMER
fi
sleep $TIMER
done
答案 0 :(得分:0)
#!/bin/bash
PATTERN='ERROR'
TIMER=300
FREQUENCY=2
while true
do
while [ $TIMER -gt 0 ]
do
sleep 1
TIMER=$((TIMER - 1))
grep -i $PATTERN logfile > tmp_log
count=`wc -l tmp_log | awk '{ print $1 }'`
if [ $count -gt $FREQUENCY ]
then
TIMER=300
fi
done
break
done
这对你的情况很好。