![如何设置 wget 在下载超过固定时长后超时](https://linux22.com/image/1302277/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20wget%20%E5%9C%A8%E4%B8%8B%E8%BD%BD%E8%B6%85%E8%BF%87%E5%9B%BA%E5%AE%9A%E6%97%B6%E9%95%BF%E5%90%8E%E8%B6%85%E6%97%B6.png)
我希望 wget(尝试)开始下载,然后如果 10 秒后还没有完成,我希望它放弃。
wget --timeout 10 http://url
似乎是合理的尝试,但似乎只设置了 --dns-timeout、--connect-timeout 和 --read-timeout。因此,它可以等待 9 秒进行 dns,再等待 9 秒进行连接,然后一直下载,只要数据保持稳定的速度(没有 10 秒以上的暂停)。
答案1
基本上这将是这样的:
wget http://www.somesite.com/file.zip &
PID=$!
sleep 10
if [ `ps ax | grep $PID` -ne '' ]
then
kill $PID
fi
答案2
这不是确切地您要问的是,如果下载空闲超过 10 秒,这只会导致 Wget 超时:
wget --read-timeout= 10 http://url
关于--read-timeout
选项,从Wget 1.13.4 手册:
将读取(和写入)超时设置为秒。此超时的“时间”是指空闲时间:如果在下载过程中的任何时间点,超过指定的秒数未收到任何数据,则读取失败并重新开始下载。此选项不会直接影响整个下载的持续时间。