如何设置 wget 在下载超过固定时长后超时

如何设置 wget 在下载超过固定时长后超时

我希望 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 手册

将读取(和写入)超时设置为秒。此超时的“时间”是指空闲时间:如果在下载过程中的任何时间点,超过指定的秒数未收到任何数据,则读取失败并重新开始下载。此选项不会直接影响整个下载的持续时间。

相关内容