下載超過固定時間後如何將 wget 設定為逾時

下載超過固定時間後如何將 wget 設定為逾時

我希望 wget (嘗試)開始下載,如果 10 秒後沒有完成,我希望它放棄。

wget --timeout 10 http://url

看起來是一個合理的嘗試,但它似乎只設定了 --dns-timeout、--connect-timeout 和 --read-timeout。因此,只要資料保持穩定的速度(沒有 10 秒以上的暫停),它就可以等待 9 秒用於 dns,再等待 9 秒用於連接,然後永遠繼續下載。

答案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 手冊:

將讀取(和寫入)逾時設定為秒秒。這個超時的「時間」是指空閒時間:如果在下載過程中的任何一點,超過指定秒數沒有收到數據,則讀取失敗並重新開始下載。此選項不會直接影響整個下載的持續時間。

相關內容