Хвостовой журнал до достижения определенного временного порога - PullRequest
2 голосов
/ 24 декабря 2010

Я веду журнал следующим образом:

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

Если в файле журнала нет «Готово», это продолжается вечно, как я могу заставить его работать, скажем, 200 секунд?Как какой-то временной порог.

Спасибо

Ответы [ 2 ]

3 голосов
/ 24 декабря 2010

Это позволяет избежать многократного просмотра всего файла:

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 голос
/ 24 декабря 2010

Если я правильно понял ваш вопрос (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
...