gpt4 book ai didi

linux - 等到服务在 bash 脚本中启动

转载 作者:IT王子 更新时间:2023-10-29 00:24:02 26 4
gpt4 key购买 nike

我有一个在后台启动某些服务的 bash 脚本。此服务成功启动后,它会将“服务器处于事件状态”打印到标准输出。我需要等到这个字符串出现,然后继续执行我的脚本。我怎样才能做到这一点?

最佳答案

我会这样做。

./server > /tmp/server-log.txt &
sleep 1
while ! grep -m1 'Server is active' < /tmp/server-log.txt; do
sleep 1
done

echo Continue

此处 -m1 告诉 grep(1) 在第一次匹配时退出。

我用下面的玩具“服务”验证了我的答案:

#! /bin/bash

trap "echo 'YOU killed me with SIGPIPE!' 1>&2 " SIGPIPE

rm -f /tmp/server-output.txt
for (( i=0; i<5; ++i )); do
echo "i==$i"
sleep 1;
done
echo "Server is active"
for (( ; i<10; ++i )); do
echo "i==$i"
sleep 1;
done
echo "Server is shutting down..." > /tmp/server-output.txt

如果将 echo Continue 替换为 echo Continue; sleep 1; ls/tmp/server-msg.txt,你会看到 ls: cannot access/tmp/server-output.txt: No such file or directory 这证明“继续”操作是在 Server is active 的输出后立即触发。

关于linux - 等到服务在 bash 脚本中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com