Чтобы избежать ситуаций --, -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.
Отказ от ответственности: я не рекомендую использовать это, поскольку это будет спамить хост в случае нестабильного соединения, и было бы неразумно оставлять его без присмотра. Однако это то, что вам нужно, если вам действительно нужно что-то скачать, и ваше соединение не работает должным образом.