Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-25 Пенетрантность Vladimir Skubriev

22.11.2013 18:25, dimas пишет:

На счет крона хорошая идея, т.к. я в принципе не планировал сразу после
того, как вставил диск начинать архивирование.

для однораховой задачи скорее подойдет какой-нибудь at. насколько я понмю, ему
можно сказать что-то типа запустить через 10 минут.

посмотрел на at буду иметь его в виду.


и еще: пайп ( cmd1 | cmd2 ) создает новый subshell (как это по-русски?), в
котором выполняется cmd2. во избежание этого (например, в случае, когда в конце
пайпа запускаем функцию, которая питается переменными из нашего скрипта) вместо
cat filename | cmd
стоит делать
cmd  filename
а вместо
echo bla-bla-bla | cmd
как-нибудь так
cmd  EOF
bla-bla-bla
EOF
а то я как-то долго не мог понять, почему функция не видит переменных, а потом
вычитал в мане про эту тему, она ж запускается в чистом окружении.
это уже немного оффтоп, но иногда можно на такое напороться.

Конкретно с таим не сталкивался, т.к. не нужно было еще.

Чем еще примечателена команда:

cmdfilename ?

Конструкцию вида:

cmd  EOF
EOF я частенько использовал, только все равно до конца не понимаю, что 
это за конструкция. Видел скопипастил и пользуюсь ))

Еще мне частенько встречались EOH-и и что то еще.

где об этом почитать и как это называется ?



--
--
Best regards,

Vladimir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52942778.3030...@skubriev.ru



Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-25 Пенетрантность Александр Вайтехович
26 ноября 2013 г., 8:45 пользователь Vladimir Skubriev vladi...@skubriev.ru
 написал:

 22.11.2013 18:25, dimas пишет:

 На счет крона хорошая идея, т.к. я в принципе не планировал сразу после
 того, как вставил диск начинать архивирование.

 для однораховой задачи скорее подойдет какой-нибудь at. насколько я
 понмю, ему
 можно сказать что-то типа запустить через 10 минут.

 посмотрел на at буду иметь его в виду.

  и еще: пайп ( cmd1 | cmd2 ) создает новый subshell (как это по-русски?), в
 котором выполняется cmd2. во избежание этого (например, в случае, когда в
 конце
 пайпа запускаем функцию, которая питается переменными из нашего скрипта)
 вместо
 cat filename | cmd
 стоит делать
 cmd  filename
 а вместо
 echo bla-bla-bla | cmd
 как-нибудь так
 cmd  EOF
 bla-bla-bla
 EOF
 а то я как-то долго не мог понять, почему функция не видит переменных, а
 потом
 вычитал в мане про эту тему, она ж запускается в чистом окружении.
 это уже немного оффтоп, но иногда можно на такое напороться.

 Конкретно с таим не сталкивался, т.к. не нужно было еще.

 Чем еще примечателена команда:

 cmdfilename ?

 Конструкцию вида:

 cmd  EOF
 EOF я частенько использовал, только все равно до конца не понимаю, что это
 за конструкция. Видел скопипастил и пользуюсь ))
 Еще мне частенько встречались EOH-и и что то еще.

 где об этом почитать и как это называется ?

http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html#COMMANDSUB


Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-25 Пенетрантность Artem Chuprina
Vladimir Skubriev - Debian-russian@lists.debian.org  @ Tue, 26 Nov 2013 
08:45:44 +0400:

 VS Конкретно с таим не сталкивался, т.к. не нужно было еще.

 VS Чем еще примечателена команда:

 VS cmdfilename ?

 VS Конструкцию вида:

 VS cmd  EOF
 VS EOF я частенько использовал, только все равно до конца не понимаю, что это 
за
 VS конструкция. Видел скопипастил и пользуюсь ))
 VS Еще мне частенько встречались EOH-и и что то еще.

Да хоть DOSYUDA...

 VS где об этом почитать и как это называется ?

Суммарно это называется перенаправление ввода-вывода в шеллах
(input-output redirection).  Конкретно второе - here-document.  Почитать
можно, собственно в man bash.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/878uwbzol9@wizzle.ran.pp.ru



Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-23 Пенетрантность Andrey Melnikoff
Vladimir Skubriev vladi...@skubriev.ru wrote:
 22.11.2013 17:19, Artem Chuprina пишет:
  Vladimir Skubriev - Debian-russian@lists.debian.org  @ Fri, 22 Nov 2013 
  15:43:47 +0400:
 

 На счет крона хорошая идея, т.к. я в принципе не планировал сразу после 
 того, как вставил диск начинать архивирование.
О ужас летящий на крыльях ночи. Повесить dnotify на /run/backup и создавать
там файлик с точкой монтирования как-то проще, чем изголятся вокруг flock,
cron  at (который например у себя на серверах я всегда сношу. за последние
10 лет он так никогда и не пригодился).



-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/kih6ma-spi@woofie.cef.spbstu.ru



udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-22 Пенетрантность Vladimir Skubriev
Мне нужно при присоединении определенного диска к серверу выполнять кое 
какой скрипт для резервного копирования сервера:



SUBSYSTEM==block, KERNEL==sd?, ATTRS{vendor}==ST500DM0, 
ATTRS{model}==02-1BD142 , 
RUN+=/usr/local/sbin/customscripts/backups/fullserverbackup.sh /dev/$name


Скрипт срабатвает один раз, т.к. девайс такой только один - с эти 
проблем нет.


Но в самом скрипте я использую следующий код:

   sfdisk -d $SRC_DISK_FOR_MBR_PART_TABLE  /tmp/sfdisk.pt
   cat /tmp/sfdisk.pt | sfdisk $DST_DEV
   [[ $? -eq 0 ]]  logger -p daemon.info fullserverbackup.sh::: 
sfdisk succesfull copy partitions from $SRC_DISK_FOR_MBR_PART_TABLE to $DST$


Так вот этот не хороший sfdisk вызывает зацикливание, т.е. во время 
работы этого скрипта вызывается еще один такой же потом еще один такой 
же - т.е. как бы рекурсия получается.


Естественно по причине особенностей работы sfdisk. Я пробовл 
использовать sfdisk --no-reread, но увы почему то не помогает - в 
принципе. Хотя и требуется по хорошему, т.к. мне после то надо писать на 
этот DST_DEV данные с рабочих дисков.


Пробовал в начале скрипта сделать условие вида:

if [ -e /tmp/sfdisk.pt ]; then exit ;
else

# ДАЛЕЕ ВЕСЬ МОЙ КОД СКРИПТА АРХИВИРОВАНИЯ

fi

Но не помогает это условие. А почему я не могу понять.

Еще хочу спросить, если этот скрипт будет выполняться раз в неделю, т.е. 
я буду подключать резервный диск к серверу раз в неделю, а сервер может 
работать не перезагружась несколько месяцев, то как мне быть с файлом 
/tmp/sfdisk.pt ? Когда бы его удалять ?


Если я удалю сразу после
   cat /tmp/sfdisk.pt | sfdisk $DST_DEV
то не факт, что сразу же запущенный этот же скрипт - не запуститься 
из-за условия в начале,т.е.

if [ -e /tmp/sfdisk.pt ]; then exit ;
Которое как раз проверяет а не был ли запущен этот самый скрипт.

Можно конечно отказаться от sfdisk-ка, но надо же уточнить - вдруг я в 
корне не прав в том, что навоял на bash'e.


Вообщем господа - скажу честно - запутался.

Помогите сделать красиво и работоспособно.

Спасибо.

--
--
Best regards,

Vladimir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/528f4373.10...@skubriev.ru



Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-22 Пенетрантность Peter Pentchev
On Fri, Nov 22, 2013 at 03:43:47PM +0400, Vladimir Skubriev wrote:
 Мне нужно при присоединении определенного диска к серверу выполнять
 кое какой скрипт для резервного копирования сервера:
 
 
 SUBSYSTEM==block, KERNEL==sd?, ATTRS{vendor}==ST500DM0,
 ATTRS{model}==02-1BD142 ,
 RUN+=/usr/local/sbin/customscripts/backups/fullserverbackup.sh
 /dev/$name
 
 Скрипт срабатвает один раз, т.к. девайс такой только один - с эти
 проблем нет.
 
 Но в самом скрипте я использую следующий код:
 
sfdisk -d $SRC_DISK_FOR_MBR_PART_TABLE  /tmp/sfdisk.pt
[snip]
 
 Так вот этот не хороший sfdisk вызывает зацикливание, т.е. во
 время работы этого скрипта вызывается еще один такой же потом еще
 один такой же - т.е. как бы рекурсия получается.
[snip]
 
 Пробовал в начале скрипта сделать условие вида:
 
 if [ -e /tmp/sfdisk.pt ]; then exit ;
 else
 
 # ДАЛЕЕ ВЕСЬ МОЙ КОД СКРИПТА АРХИВИРОВАНИЯ
 
 fi
 
 Но не помогает это условие. А почему я не могу понять.

Попробуйте использовать утилиту flock(1) - или из самого правила udev,
или из скрипта, как в примере в manpage flock:

( flock -n 9 || exit 0; ...Ваш скрипт... ) 9/tmp/sfdisk.lock

(разумеется, магическая девятка здесь сугубо не магическая, а номер
файлового дескриптора, который вероятно не используется шелом)
Только в Вашем случае exit 0, а не 1, потому что будет нормально,
что скрипта запустят дважды.

Всего лучшего,
Петр

-- 
Peter Pentchev  r...@ringlet.net r...@freebsd.org p.penc...@storpool.com
PGP key:http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13
If I had finished this sentence,


signature.asc
Description: Digital signature


Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-22 Пенетрантность Artem Chuprina
Vladimir Skubriev - Debian-russian@lists.debian.org  @ Fri, 22 Nov 2013 
15:43:47 +0400:

 VS Мне нужно при присоединении определенного диска к серверу выполнять кое 
какой
 VS скрипт для резервного копирования сервера:


 VS SUBSYSTEM==block, KERNEL==sd?, ATTRS{vendor}==ST500DM0,
 VS ATTRS{model}==02-1BD142 ,
 VS RUN+=/usr/local/sbin/customscripts/backups/fullserverbackup.sh /dev/$name

Для начала.  Кажется, в документации на udev написано: НИКОГДА не пишите
тут скриптов, которые могут выполняться долго.

Поставь флаг для следящего демона (например, cron), и выходи.  И забудь
про описанную проблему.

Второе.

Делать бэкап по факту вставления диска - плохая идея.  Как ты будешь с
него восстанавливать файлы, если стоит его воткнуть - скрипт бэкапа
начнет их стирать (если они удалены) или затирать испорченными (если они
испорчены)?

Хорошее правило: прежде чем разработать систему резервного копирования,
разработай систему восстановления.  Иначе смысла в такой системе
резервного копирования не будет.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/877gc01sm3@wizzle.ran.pp.ru



Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-22 Пенетрантность Vladimir Skubriev

22.11.2013 17:19, Artem Chuprina пишет:

Vladimir Skubriev - Debian-russian@lists.debian.org  @ Fri, 22 Nov 2013 
15:43:47 +0400:

  VS Мне нужно при присоединении определенного диска к серверу выполнять кое 
какой
  VS скрипт для резервного копирования сервера:


  VS SUBSYSTEM==block, KERNEL==sd?, ATTRS{vendor}==ST500DM0,
  VS ATTRS{model}==02-1BD142 ,
  VS RUN+=/usr/local/sbin/customscripts/backups/fullserverbackup.sh 
/dev/$name

Для начала.  Кажется, в документации на udev написано: НИКОГДА не пишите
тут скриптов, которые могут выполняться долго.

Поставь флаг для следящего демона (например, cron), и выходи.  И забудь
про описанную проблему.

Второе.

Делать бэкап по факту вставления диска - плохая идея.  Как ты будешь с
него восстанавливать файлы, если стоит его воткнуть - скрипт бэкапа
начнет их стирать (если они удалены) или затирать испорченными (если они
испорчены)?

Хорошее правило: прежде чем разработать систему резервного копирования,
разработай систему восстановления.  Иначе смысла в такой системе
резервного копирования не будет.


Этот бэкап второй способ бэкапа, т.е. важные данные бэкапяться бакулой 
каждый день на архивный сервер.


Это для того, чтобы раз в неделю снимать копию с сервера и уносить её 
домой )


На счет крона хорошая идея, т.к. я в принципе не планировал сразу после 
того, как вставил диск начинать архивирование.


Я планировал, что это будет делаться ночью, а утром я буду забирать это 
диск прийдя на работу.


И так раз в неделю - желание руководства.

--
--
Best regards,

Vladimir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/528f602d.6050...@skubriev.ru



Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-22 Пенетрантность dimas
 На счет крона хорошая идея, т.к. я в принципе не планировал сразу после 
 того, как вставил диск начинать архивирование.
для однораховой задачи скорее подойдет какой-нибудь at. насколько я понмю, ему
можно сказать что-то типа запустить через 10 минут.

и еще: пайп ( cmd1 | cmd2 ) создает новый subshell (как это по-русски?), в
котором выполняется cmd2. во избежание этого (например, в случае, когда в конце
пайпа запускаем функцию, которая питается переменными из нашего скрипта) вместо
cat filename | cmd
стоит делать
cmd  filename
а вместо
echo bla-bla-bla | cmd
как-нибудь так
cmd  EOF
bla-bla-bla
EOF
а то я как-то долго не мог понять, почему функция не видит переменных, а потом
вычитал в мане про эту тему, она ж запускается в чистом окружении.
это уже немного оффтоп, но иногда можно на такое напороться.


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131122182504.2632a...@ulf.tvoe.tv



Re: udev infinity loop when using custom rule file with RUN+= script and sfdisk

2013-11-22 Пенетрантность Artem Chuprina
Vladimir Skubriev - Debian-russian@lists.debian.org  @ Fri, 22 Nov 2013 
17:46:21 +0400:

VS Мне нужно при присоединении определенного диска к серверу выполнять 
  кое какой
VS скрипт для резервного копирования сервера:
 
 
VS SUBSYSTEM==block, KERNEL==sd?, ATTRS{vendor}==ST500DM0,
VS ATTRS{model}==02-1BD142 ,
VS RUN+=/usr/local/sbin/customscripts/backups/fullserverbackup.sh 
  /dev/$name
 
  Для начала.  Кажется, в документации на udev написано: НИКОГДА не пишите
  тут скриптов, которые могут выполняться долго.
 
  Поставь флаг для следящего демона (например, cron), и выходи.  И забудь
  про описанную проблему.
 
  Второе.
 
  Делать бэкап по факту вставления диска - плохая идея.  Как ты будешь с
  него восстанавливать файлы, если стоит его воткнуть - скрипт бэкапа
  начнет их стирать (если они удалены) или затирать испорченными (если они
  испорчены)?
 
  Хорошее правило: прежде чем разработать систему резервного копирования,
  разработай систему восстановления.  Иначе смысла в такой системе
  резервного копирования не будет.
 
 
 VS Этот бэкап второй способ бэкапа, т.е. важные данные бэкапяться бакулой 
каждый
 VS день на архивный сервер.

 VS Это для того, чтобы раз в неделю снимать копию с сервера и уносить её 
домой )

Это я понял.  Вопрос в том, как ты будешь с нее что-то восстанавливать,
если вдруг понадобится.  А тут придет бэкап, и все забэкапит нах...

 VS На счет крона хорошая идея, т.к. я в принципе не планировал сразу после 
того,
 VS как вставил диск начинать архивирование.

 VS Я планировал, что это будет делаться ночью, а утром я буду забирать это 
диск
 VS прийдя на работу.

Ну вот разве что так.  И в инструкции по восстановлению написать
большими зелеными свистящими буквами:

УТРО ВЕЧЕРА МУДРЕНЕЕ


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87zjowz8ze@wizzle.ran.pp.ru