我有一个启动服务器脚本
startserver.sh
它将作为startserver.sh &
脚本需要运行一段时间的后台任务运行,直到它真正可以在运行状态下运行。server.log
运行状态可以在准备好时写入日志文件。
所以我需要通过执行 bash cmd 知道服务器何时真正运行。如果没有,我需要等到 server.log 中显示 Running 状态。
我可以在 bash 中实现这一点吗?
我有一个启动服务器脚本
startserver.sh
它将作为startserver.sh &
脚本需要运行一段时间的后台任务运行,直到它真正可以在运行状态下运行。server.log
运行状态可以在准备好时写入日志文件。
所以我需要通过执行 bash cmd 知道服务器何时真正运行。如果没有,我需要等到 server.log 中显示 Running 状态。
我可以在 bash 中实现这一点吗?
try something like this
mkfifo my_fifo
tail -f server.log >my_fifo &
tail_pid=$!
perl -ne '/pattern/&&exit' <my_fifo
kill $tail_pid
rm my_fifo
EDIT : perl command can be replaced with
grep -l 'pattern' <my_fifo >/dev/null
or if grep support this option
grep -q 'pattern' <my_fifo