Во избежание --, -K/s
ситуаций вы можете использовать --read-timeout=seconds
. Это приведет к превышению времени ожидания соединения через несколько секунд.
Если вам нужно пойти дальше, вы можете использовать эту настройку
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
Это приведет к повторным попыткам отклоненных подключений и аналогичным фатальным ошибкам ( --retry-connrefused
), будет ждать 1 секунду перед следующей повторной попыткой ( --waitretry
), будет ждать максимум 20 секунд, если не будет получено никаких данных, а затем попытаться снова ( --read-timeout
), будет ждать максимум 15 секунд до истечения времени ожидания первоначального соединения ( --timeout
) и, наконец, оно будет повторяться бесконечное число раз ( -t 0
).
Вы можете также захотеть поместить это в while
цикл, чтобы избежать сбоя локальной сети и тому подобного. В этом случае вам также нужно добавить --continue
, чтобы продолжить загрузку, где вы остановились. Следующее хорошо работает в Bash
while [ 1 ]; do
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
if [ $? = 0 ]; then break; fi; # check return value, break if successful (0)
sleep 1s;
done;
В качестве бонуса вы также можете использовать, --no-dns-cache
если хост балансирует ваш запрос между несколькими серверами по DNS.
Отказ от ответственности: я не рекомендую использовать это, так как это будет спамить хост в случае нестабильного соединения, и было бы неразумно оставлять его без присмотра. Однако это то, что вам нужно, если вам действительно нужно что-то скачать и ваше соединение не работает должным образом.
--read-timeout=900
. Вы можете просто подождать 15 минут и wget возобновит загрузку.