Linux wget, тайм-аут и повторы. "Виснет" wget при разрыве связи.
Написали тут с вопросом, мол виснет у нас программа, почему никто не знает, кто ее писал уволился давно, поможи. Ну от чего же не помочь. Программа оказалась башевским скриптом, точнее, набором скриптов. Задача небольшая, выгрузить файл с удаленного сервера, переформатировать и положить на другой сервер, где его подхватывает бухгалтерия. Выгрузка делалась банальным
wget
.Оказалось, скрипт вис, если пропадало соединение с сетью.
Выгрузка производилась простой командой:
wget -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat "
Оказывается, у
wget
не проставлен тайм-аут ожидания, а по умолчанию, если его не проставить, wget
будет ждать аж 900 секунд (15 минут). Надо, соответственно, его напрямую указать в параметре ключа -T <секунды> (--timeout=<секунды>)
,Например, можно поставить вменяемые полминуты (30 с.):
wget --timeout=30 -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat "
Т.е. вис-то, собственно
wget
, хотя конечно же, не вис, а терпеливо ждал. Но тут и не бухгалтеру, а даже не сильно опытному пользователю ничего не стоит принять такое поведение за то, что wget
виснет при разрыве соединения.Заодно можно указать
wget
'у количество попыток для скачивания файла: -t <число>
(--tries=<число>
), тем более, что указание параметра -O
(имя выходного файла) сбрасывает этот параметр в 1.wget --timeout=30 --tries=3 -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat "
Шпаргалка по Wget. Копия в PDF
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2020/02/18/linu