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
next prev parent 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