1

Я вижу эту опцию:

--waitretry=seconds

Если вы не хотите, чтобы Wget ожидал между каждым поиском, а только между повторными попытками неудачных загрузок, вы можете использовать эту опцию. Wget будет использовать линейный откат, ожидающий 1 секунду после первого сбоя в данном файле, затем ожидающий 2 секунды после второго сбоя в этом файле, вплоть до указанного вами максимального количества секунд. Следовательно, значение 10 фактически заставит Wget ждать до (1 + 2 + ... + 10) = 55 секунд на файл.

По умолчанию Wget принимает значение 10 секунд.

Но это не (а) похоже, что оно не увеличивает время между попытками повторения, и (б) я не хочу устанавливать "максимальное" время ожидания, но минимум.

--timeout=seconds

Установите время ожидания сети на секунды, секунды. Это эквивалентно указанию --dns-timeout , --connect-timeout и --read-timeout одновременно.

При взаимодействии с сетью Wget может проверить время ожидания и прервать операцию, если она занимает слишком много времени. Это предотвращает аномалии, такие как зависание чтения и бесконечные соединения. Единственный тайм-аут, включенный по умолчанию, - это тайм-аут чтения 900 секунд Установка таймаута в 0 отключает его полностью. Если вы не знаете, что делаете, лучше не менять настройки тайм-аута по умолчанию.

Все параметры, связанные с тайм-аутом, принимают как десятичные значения, так и значения в секунду. Например, 0.1 секунды - это законный (хотя и неразумный) выбор времени ожидания. Тайм-аут подсекунды полезен для проверки времени отклика сервера или для проверки задержки сети.

Это, кажется, устанавливает количество времени, прежде чем сдаться.

Итак, как мне сказать «подождите 10 минут, прежде чем пытаться снова, если время ожидания истекло»?

1 ответ1

2

Вы можете отключить повторную попытку (-t 0) и проверить возвращаемое значение wget. Например, при использовании bash:

failures=0
while [ $failures -lt 10 ]; do
 wget -t 0 http://www.example.com/asdf
 if [ "$?" = 0 ]; then
  break
 else
  let failures=failures+1
  sleep 600
 fi
done

Это проверит возвращаемое значение wget и спит 600 секунд, если wget потерпел неудачу. wget возвращает 0, если файл был успешно загружен (и сохранен). Этот небольшой скрипт запускается только десять раз - конечно, вы можете изменить аргумент цикла while. В противном случае, например, скрипт будет пытаться загрузить один и тот же файл на неопределенный срок, даже если он просто не существует. Запуск с использованием другой оболочки требует небольших изменений (например, вы не можете использовать "let", но обычно expr - хорошая замена).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .