gpt4 book ai didi

linux - wget 强制重试直到有连接

转载 作者:IT王子 更新时间:2023-10-29 01:08:28 31 4
gpt4 key购买 nike

我有一个使用 wget 在 3g 设备上运行的 bash 脚本。我希望脚本暂停,直到我得到响应,所以我设置了这样的代码:

wget -t 0 -T 15 --retry-connrefused www.example.com

问题是当根本没有连接时(3g 掉线几秒钟)DNS 无法解析主机并且 wget 停止重试。

有没有办法在连接恢复之前强制重试?我知道我可以写一个循环,但我想知道 wget 中是否有我可以使用的设置。如果没有构建循环的最佳变量?

更多详情:

使用我编写的代码,wget 将重试,但如果设备根本没有互联网连接(例如,我从设备中拔出 3g 加密狗),它将停止重试,告诉我它可以'解析主机地址。它在 -T 15

定义的 15 秒后发送
wget: unable to resolve host address

最佳答案

这个循环应该这样做:

while true;do
wget -T 15 -c http://example.com && break
done


工作原理:

  1. 如果没有网络连接,while loop不会中断,它将运行 wget连续命令并不断打印错误信息。
  2. 一旦连接到互联网,wget开始解析主机并获取文件。
  3. 现在,如果连接丢失或发生其他错误,默认重试(不要使用 0inf,即无限重试,使用有限值)wget将重试获取文件,直到达到 15 秒的超时。 15 秒后 wget命令将失败并打印错误输出,因此 while loop不会坏的。所以它会再次进入没有连接等状态,并不断打印错误信息。
  4. 一旦建立连接或错误得到解决,wget开始解析主机并获取文件。只要文件未完全下载,这些步骤 (1-4) 就会继续。
  5. wget命令使用 -c选项,即恢复选项。所以 wget 的每个实例将从停止的地方开始(下载)。
  6. 当文件下载完成并且 wget命令成功,循环将中断。

关于linux - wget 强制重试直到有连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30983511/

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