[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