Щоб уникнути --, -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 секунд до початкових тайм-аутів з'єднання out ( --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 відновить завантаження.