[Comm] Зеркалирование по расписанию.
Vladimir Karpinsky
=?iso-8859-1?q?vkarpinsky_=CE=C1_mail=2Eru?=
Вс Мар 22 21:51:40 MSK 2009
Yura Kalinichenko пишет:
>> Насколько я понял, --- понял ещё не всё, разбираюсь, --- это не совсем
>> то. У меня проблема такая: по крону раз в 15 минут запускается скрипт,
>> пытающийся достучаться до удалённого ресурса и скачать оттуда данные.
>> Связь, даже когда она есть, терпимая, хуже другое: 20 часов из 24 нет
>> там нет электричества. Скрипт без связи отваливается, лок-файл
>> удаляется, всё хорошо. Мне надо отследить момент, когда связь есть, и
>> уже происходит перекачка данных, а тут подходит время следующего
>> запуска скрипта: возможны разные неприятности при одновременной
>> закачке, поэтому повторный скрипт должен обнаружить блокировку и
>> просто отвалится, не трогая её.
> Так это и происходит, когда используете для блокировки функцию
> test_lock. Плюс проверяется - существует ли еще процесс, создавший
> блокировку, и если нет (напр. был убит по kill -9) - блокировка
> перехватывается.
Я прошу прощения, а что такое kill -0? kill -l про сигнал 0 молчит... Я до
конца не понимаю смысл цикла until: ставится запрет на перезапись
существующего файла и дальше зацикливаемся в попытке его перезаписать.
Далее, если kill -0 успешен, то удалять лок-файл не надо, ждём, что он
процессе счёта до 10 сам уйдёт (?) или мы его убьём в следующей итерации
until. Что-то я запутался, пните, пожалуйста, в нужном направлении.
>> А если произойдёт штатный выход или kill -9, то блокировку надо снять,
>> чтобы разрешить следующий запуск. kill -9 нужен на тот случай, когда
>> связь разрывается в процессе закачки и скрипт подвисает (wget не
>> отваливается). Для отработки такого случая, я убиваю соответствующий
>> pid, в том случае, когда блокировка есть, а связи нет.
> IMHO, логичнее заставить wget отваливаться при разрыве связи (--timeout
> ?). Убивать чужой процесс - как-то некрасиво.
Полностью согласен, но мои эксперименты с выдёргиванием сетевого шнура из
компьютера, с котрого уже качает wget, показал, что wget не отваливается,
несмотря на наличие таймаутов. Если переход на rsync окажется удачным, то
там это не понадобится. Но я уже вижу, что можно реализовать то, что я хочу
путём анализа перезаписи лок-файла при наличии запрета на перезапись в
сочетании с успешностью работы ping.
--
С уважением,
Владимир.
Подробная информация о списке рассылки community