【问题标题】:Bash - check to make sure website is available before continuing, otherwise sleep and try againBash - 在继续之前检查以确保网站可用,否则休眠并重试
【发布时间】:2025-12-30 11:40:17
【问题描述】:

我有一个脚本,我想在 Linux 主机启动时执行,但它取决于在另一台主机上运行的 influxdb。由于两台主机几乎同时出现,我需要先启动 influxdb,然后才能运行我的脚本,否则脚本将失败。

我在想它应该是一个 bash 脚本,它首先使用 curl 检查端口是否可用。如果是,请继续。如果不是,则休眠 30 秒,然后重试,以此类推。

到目前为止,我有正确的逻辑来检查 influxdb 是否已启动,但我不知道如何将其合并到 bash 脚本中。

if 
  curl --head --silent --fail http://tick.home:8086/ping 1> /dev/null
    then echo "1"
  else echo "0"
fi

如果结果为 1,则继续执行脚本。如果结果为 0,则休眠 30 秒,然后再次尝试 if 语句。最好的方法是什么?

【问题讨论】:

    标签: bash curl influxdb


    【解决方案1】:

    试试

    until curl --head --silent --fail http://tick.home:8086/ping 1> /dev/null 2>&1; do
        sleep 1
    done
    

    【讨论】: