拖尾日志直到达到某个时间阈值

时间:2010-12-24 13:37:47

标签: linux shell ksh sh

我正在拖着这样的日志:

while [[ ! -n "${ready}" ]]; do
    start_info=`grep "Ready" $LOG_FILE`
    sleep 10
done

如果日志文件中没有“Ready”,那么这将永远持续下去,我怎么能让它运行200秒呢?像某种时间阈值。

由于

2 个答案:

答案 0 :(得分:3)

这可以避免重复使用整个文件:

start=$SECONDS
limit=200
while read -r line
do
    if [[ $line =~ $ready ]]
    then
        start_info=$line
        break
    fi
    if (( $SECONDS >= start + limit ))
    then
        break
    fi
done < "$LOG_FILE"

答案 1 :(得分:1)

如果我的问题正确(while [[ ! -n "${ready}" ]]; do令人困惑),这里有一个如何检查时间阈值的示例:

#!/bin/sh

...
timelimit=200
pausetime=10

while [[ -z "${start_info}" ]]; do
  start_info=`grep "Ready" $LOG_FILE`
  sleep $pausetime
  timelimit=$((timelimit - $pausetime))
  if [ $timelimit -le 0 ]; then
    break
  fi  
done