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: