ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Yura Kalinichenko <yuk@kalina.in.ua>
To: ALT Linux Community general discussions <community@lists.altlinux.org>
Subject: Re: [Comm] Зеркалирование по расписанию.
Date: Sun, 22 Mar 2009 21:53:51 +0200
Message-ID: <49C6974F.3060502@kalina.in.ua> (raw)
In-Reply-To: <49C688BC.3090200@mail.ru>

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

The special signal number `0' does not denote a valid signal, but can
be used to test whether the PID arguments specify processes to which a
signal could be sent.


> Я до конца не понимаю смысл цикла until: ставится запрет на перезапись 
> существующего файла и дальше зацикливаемся в попытке его перезаписать. 
> Далее, если kill -0 успешен,
Т.е. лок выставлен, и процесс, его создавший, активен
> то удалять лок-файл не надо, ждём, что он процессе счёта до 10 сам 
> уйдёт (?)
Т.е. ожидаем (если нужно) что процесс, заблокировавший ресурс, 
завершится сам и тогда мы выставим свою блокировку и начнем свою обработку.
> или мы его убьём в следующей итерации until.
Не его - себя. Если за определенное время процесс, ранее заблокировавший 
ресурс, его не освободил - обычно ждать далее не имеет смысла, и мы 
выходим в расчете на следующий запуск. Хотя иногда (но не в вашей 
ситуации) может иметь смысл ожидать до победного конца.
> Что-то я запутался, пните, пожалуйста, в нужном направлении.
>
>>> А если произойдёт штатный выход или kill -9, то блокировку надо 
>>> снять, чтобы разрешить следующий запуск. kill -9 нужен на тот 
>>> случай, когда связь разрывается в процессе закачки и скрипт 
>>> подвисает (wget не отваливается). Для отработки такого случая, я 
>>> убиваю соответствующий pid, в том случае, когда блокировка есть, а 
>>> связи нет.
>> IMHO, логичнее заставить wget отваливаться при разрыве связи 
>> (--timeout ?). Убивать чужой процесс - как-то некрасиво.
>
> Полностью согласен, но мои эксперименты с выдёргиванием сетевого шнура 
> из компьютера, с котрого уже качает wget, показал, что wget не 
> отваливается, несмотря на наличие таймаутов.
Странно. Только что проверил: wget --timeout=3 -c 'http://...' 
благополучно разрывается через 3 сек. после выдергивания шнура либо 
укладывания интерфейса.


-- 
SY, 
   Yura Kalinichenko



  reply	other threads:[~2009-03-22 19:53 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-10  9:34 Vladimir Karpinsky
2008-12-10  9:53 ` Yuri Bushmelev
2008-12-10  9:56 ` Alexey Borovskoy
2008-12-10 10:43   ` Vladimir Karpinsky
2008-12-10 13:16     ` Alexey Borovskoy
2008-12-10 15:18       ` Vladimir Karpinsky
2009-03-21 20:27   ` Vladimir Karpinsky
2009-03-21 21:57     ` Yura Kalinichenko
2009-03-22  6:51       ` Vladimir Karpinsky
2009-03-22 16:38         ` Yura Kalinichenko
2009-03-22 18:51           ` Vladimir Karpinsky
2009-03-22 19:53             ` Yura Kalinichenko [this message]
2009-03-23  6:55               ` Vladimir Karpinsky
2009-03-23  7:20                 ` Andrey Rahmatullin
2009-03-25 19:29       ` Vladimir Karpinsky
2009-03-25 19:32         ` Andrey Rahmatullin
2009-03-25 19:52           ` Vladimir Karpinsky
2009-03-25 21:42         ` Yura Kalinichenko
2009-03-26  5:50           ` Vladimir Karpinsky
2009-03-26 10:06           ` Sergey Vlasov
2009-03-26 18:21             ` Yura Kalinichenko
2008-12-10 17:00 ` Vladimir Karpinsky
2008-12-10 17:18   ` Denis Nazarov
2008-12-10 17:36     ` Vladimir Karpinsky
2008-12-10 19:24   ` Sergey Vlasov
2008-12-11  5:40     ` Vladimir Karpinsky
2008-12-13 12:19 ` Vladimir Karpinsky
2008-12-13 13:28   ` Костарев Алексей
2008-12-13 15:53     ` Vladimir Karpinsky
2008-12-14 17:37       ` Michael Shigorin
2008-12-14 18:49         ` Vladimir Karpinsky
2008-12-15  7:33           ` Костарев Алексей
2008-12-15  7:58             ` Vladimir Karpinsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49C6974F.3060502@kalina.in.ua \
    --to=yuk@kalina.in.ua \
    --cc=community@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git