[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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



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


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 8888;
else

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

fi

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

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

Если я удалю сразу после
       cat /tmp/sfdisk.pt | sfdisk $DST_DEV
то не факт, что сразу же запущенный этот же скрипт - не запуститься из-за условия в начале,т.е.
if [ -e /tmp/sfdisk.pt ]; then exit 8888;
Которое как раз проверяет а не был ли запущен этот самый скрипт.

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

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

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

Спасибо.

--
--
Best regards,

Vladimir Skubriev


Reply to: