[Comm] Зеркалирование по расписанию.

Vladimir Karpinsky =?iso-8859-1?q?vkarpinsky_=CE=C1_mail=2Eru?=
Пн Мар 23 09:55:49 MSK 2009


Здравствуйте!

Yura Kalinichenko пишет:
> Vladimir Karpinsky пишет:
>> Yura Kalinichenko пишет:
>>>> Насколько я понял, --- понял ещё не всё, разбираюсь, --- это не 
>>>> совсем то. У меня проблема такая: по крону раз в 15 минут 
>>>> запускается скрипт, пытающийся достучаться до удалённого ресурса и 
>>>> скачать оттуда данные. Связь, даже когда она есть, терпимая, хуже 
>>>> другое: 20 часов из 24 нет там нет электричества. Скрипт без связи 
>>>> отваливается, лок-файл удаляется, всё хорошо. Мне надо отследить 
>>>> момент, когда связь есть, и уже происходит перекачка данных, а тут 
>>>> подходит время следующего запуска скрипта: возможны разные 
>>>> неприятности при одновременной закачке, поэтому повторный скрипт 
>>>> должен обнаружить блокировку и просто отвалится, не трогая её.
>>> Так это и происходит, когда используете для блокировки функцию 
>>> test_lock. Плюс проверяется - существует ли еще процесс, создавший 
>>> блокировку, и если нет (напр. был убит по kill -9) - блокировка 
>>> перехватывается.
>>
>> Я  прошу прощения, а что такое kill -0? kill -l про сигнал 0 молчит... 
> Ну это в общем-то классика. Этот псевдосигнал используется для проверки 
> существования процесса. Вот что говорит, к примеру, info kill:

Спасибо! Странно, что нет ни в man, ни в kill -l.

>> Я до конца не понимаю смысл цикла until: ставится запрет на перезапись 
>> существующего файла и дальше зацикливаемся в попытке его перезаписать. 
>> Далее, если kill -0 успешен,
> Т.е. лок выставлен, и процесс, его создавший, активен
>> то удалять лок-файл не надо, ждём, что он процессе счёта до 10 сам 
>> уйдёт (?)
> Т.е. ожидаем (если нужно) что процесс, заблокировавший ресурс, 
> завершится сам и тогда мы выставим свою блокировку и начнем свою обработку.
>> или мы его убьём в следующей итерации until.
> Не его - себя. Если за определенное время процесс, ранее заблокировавший 
> ресурс, его не освободил - обычно ждать далее не имеет смысла, и мы 
> выходим в расчете на следующий запуск. Хотя иногда (но не в вашей 
> ситуации) может иметь смысл ожидать до победного конца.

Понял, вроде.

>> Полностью согласен, но мои эксперименты с выдёргиванием сетевого шнура 
>> из компьютера, с котрого уже качает wget, показал, что wget не 
>> отваливается, несмотря на наличие таймаутов.
> Странно. Только что проверил: wget --timeout=3 -c 'http://...' 
> благополучно разрывается через 3 сек. после выдергивания шнура либо 
> укладывания интерфейса.

Попробую ещё раз на днях... Ставил  ключи -t 5 -T 5: т.е. 5 попыток по 5 
секунд. У меня не отваливался wget, только если сеть рвалась уже имеено 
в момент закачки. Во всех остальных случаях (подключение, получение 
списка и т.п.) всё отваливалось нормально.

-- 
	С уважением,
		Владимир.


Подробная информация о списке рассылки community