跟踪日志直到达到特定时间阈值

发布于 2024-10-08 18:52:54 字数 205 浏览 7 评论 0原文

我正在跟踪这样的日志:

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

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

谢谢

I'm tailing a log like this:

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

If the log file doesn't have "Ready" inside this goes on forever, how can I make it run for lets say 200 seconds? Like some kind of time threshold.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尐籹人 2024-10-15 18:52:54

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

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"

This avoids repeatedly grepping the whole file:

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"
最佳男配角 2024-10-15 18:52:54

如果我正确地回答了你的问题(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

If I got your question correctly (while [[ ! -n "${ready}" ]]; do is confusing) here is an example how you can check time threshold:

#!/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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文