根据日志输出连续执行命令

根据日志输出连续执行命令

我写了一个脚本来一一启动我的服务。每个服务完成后,它应该执行下一个命令,并等待第一个命令执行,因为我给出了这个命令:

wait_for "Server started in RUNNING mode"
wait_for "socket listener started on port"

但它并没有采用这个逻辑

wait_for() {
    res=0
    while [[ ! $res -gt 0 ]]
    do
        res=$(tail -5 "$START_LOG" | fgrep -c "$1")
        sleep 5
    done
}

答案1

wait_for() {
    ( tail -n5 -F "$START_LOG" 2>/dev/null & ) | fgrep -l "$1" >/dev/null
}

-F意味着即使日志旋转也遵循

&发送tail到后台,这样父 shell 就不会等待它死掉。该进程将挂起一段时间,直到记录下一条消息。

相关内容