[Comm] Зеркалирование по расписанию.
Yura Kalinichenko
=?iso-8859-1?q?yuk_=CE=C1_kalina=2Ein=2Eua?=
Вс Мар 22 19:38:15 MSK 2009
Vladimir Karpinsky пишет:
> Здравствуйте!
>
> Насколько я понял, --- понял ещё не всё, разбираюсь, --- это не совсем
> то. У меня проблема такая: по крону раз в 15 минут запускается скрипт,
> пытающийся достучаться до удалённого ресурса и скачать оттуда данные.
> Связь, даже когда она есть, терпимая, хуже другое: 20 часов из 24 нет
> там нет электричества. Скрипт без связи отваливается, лок-файл
> удаляется, всё хорошо. Мне надо отследить момент, когда связь есть, и
> уже происходит перекачка данных, а тут подходит время следующего
> запуска скрипта: возможны разные неприятности при одновременной
> закачке, поэтому повторный скрипт должен обнаружить блокировку и
> просто отвалится, не трогая её.
Так это и происходит, когда используете для блокировки функцию
test_lock. Плюс проверяется - существует ли еще процесс, создавший
блокировку, и если нет (напр. был убит по kill -9) - блокировка
перехватывается.
> А если произойдёт штатный выход или kill -9, то блокировку надо снять,
> чтобы разрешить следующий запуск. kill -9 нужен на тот случай, когда
> связь разрывается в процессе закачки и скрипт подвисает (wget не
> отваливается). Для отработки такого случая, я убиваю соответствующий
> pid, в том случае, когда блокировка есть, а связи нет.
IMHO, логичнее заставить wget отваливаться при разрыве связи (--timeout
?). Убивать чужой процесс - как-то некрасиво.
--
SY,
Yura Kalinichenko
Подробная информация о списке рассылки community