我有一个使用wget
3g设备上运行的bash脚本.我希望脚本暂停,直到我得到响应,所以我设置了我的代码:
wget -t 0 -T 15 --retry-connrefused www.example.com
Run Code Online (Sandbox Code Playgroud)
问题是,当根本没有连接时(3g下降几秒钟),DNS无法解析主机并wget
停止重试.
有没有办法强制重试,直到连接回来?我知道我可以写一个循环,但我想知道我是否有wget
可以使用的设置.如果没有什么最好的变量来构建循环?
更多细节:
使用我编写的代码,wget
将重试,但如果设备根本没有Internet连接(例如我从设备中拔出3g加密狗),它将停止重试,告诉我它无法解析主机地址.它在定义的15秒后发送-T 15
wget: unable to resolve host address
Run Code Online (Sandbox Code Playgroud)
这个循环应该这样做:
while true;do
wget -T 15 -c http://example.com && break
done
Run Code Online (Sandbox Code Playgroud)
while loop
它将不会中断,它将wget
连续运行命令并保持打印错误消息.wget
就开始解析主机并获取文件.0
或inf
即无限制重试,使用限制值)wget
将重试以获取文件,直到达到15秒的超时.15秒后,wget
命令将失败并打印错误输出,因此while loop
不会中断.因此,它将再次进入没有连接等的状态并保持打印错误消息.wget
开始解析主机并获取文件.只要文件未完全下载,这些步骤(1-4)就会继续.wget
命令使用-c
选项,即resume选项.所以每个实例wget
都会从它停止的地方开始(下载).wget
命令成功时,循环将中断.