@sazhyk

В чем ошибка написания скрипта?

Скрипт
#!/bin/sh

OBNAM=/usr/bin/obnam

CREDENTIALS=/root/.smbclient

BAK_SHARE1_SRC=//192.168.0.1/share1
BAK_SHARE1_DST=/mnt/share1
BAK_SHARE2_SRC=//192.168.66.4/share2
BAK_SHARE2_DST=/mnt/share2

BAK_STOR=/backup

LOCK=$BAK_SHARE2_DST/success.lock

mount -o remount,rw $BAK_STOR
mount -t cifs $BAK_SHARE1_SRC $BAK_SHARE1_DST -o ro,credentials=$CREDENTIALS
mount -t cifs $BAK_SHARE2_SRC $BAK_SHARE2_DST -o ro,credentials=$CREDENTIALS

if [ -f $LOCK ]; 
	$OBNAM backup;
elif [ ! -f $LOCK ]; then
	echo 'Lockfile not found!' >> /var/log/obnam.log;
fi

umount $BAK_SHARE2_DST
umount $BAK_SHARE1_DST
mount -o remount,ro $BAK_STOR


Суть скрипта примерно думаю понятна, монтируем две сетевые папки, в одной из них есть файл $LOCK. Проверяем, если он есть, то делаем резервное копирование программой obnam. Проблема в том, что после выполнения команды $OBNAM backup; исполнение скрипта продолжается. То есть выполняются команды ниже условия проверки наличия файла - отмонтируются сетевые папки.
Собственно вопрос, как заставить скрипт "ждать", пока выполняется команда $OBNAM backup;?
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Добавьте команду "подождать"
.....
...
if [ -f $LOCK ]; 
  $OBNAM backup;
elif [ ! -f $LOCK ]; then
  echo 'Lockfile not found!' >> /var/log/obnam.log;
fi

wait
umount $BAK_SHARE2_DST
umount $BAK_SHARE1_DST
mount -o remount,ro $BAK_STOR


Ну или еще вариант, посмотреть что именно внутри /usr/bin/obnam - скорее всего это скрипт, в котором происходит вызов чего-то там в фоне.
Ответ написан
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
$OBNAM backup && далее
Ответ написан
@noob1
Anykey
Посмотрите здесь - https://stackoverflow.com/questions/356100/how-to-... . Запустить цыкл проверки - запущен ли процесс и после завершения продолжить выполнение скрипта .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы