#!/bin/sh
mount -t cifs //192.168.5.90/share -o password='' /mnt/tera_nas
rsync -av --super --delete --recursive /home/ /mnt/tera_nas/home/
# sleep 5m (i want to avoid using this)
# Bash shell snippet to check if mounted Samba share is not busy before issuing umount command
umount /mnt/tera_nas/
вы можете использовать "fuser -m mountpoint", чтобы узнать, есть ли у кого-нибудь доступ к пути.
вы можете lsof увидеть, есть ли у него открытые файловые дескрипторы
Я бы просто лениво размонтировал его, используя флаг -l. Это удалит точку монтирования из файловой системы (так что никакие новые операции не могут начаться) и завершит надлежащее размонтирование, когда она больше не будет занята.
Пусть umount сделает всю работу за вас:
while ! $(umount /mnt/tera_nas/ 2>/dev/null)
do
echo "not yet"
sleep 5m
done
echo "now it is"
Вы можете сократить время сна, но я бы не стал его исключать. Здесь он играет иную роль, чем в вашем вопросе.
Использовать automount
чтобы сделать это автоматически, точка монтирования /mnt/tera_nas/home/
будет автоматически монтироваться при обращении к нему, а затем размонтироваться, когда он больше не нужен.
# /etc/auto.master
/mnt auto.mnt
# /etc/auto.mnt
tera_nas -t cifs,password='' ://192.168.5.90/share
затем service autofs restart