Snippet de shell Bash para verificar se o compartilhamento do Samba montado não está ocupado

2
#!/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/
    
por cgomezsilva 24.06.2009 / 19:09

6 respostas

3

Gostaria apenas de desmontar, usando o sinalizador -l. Isso removerá o ponto de montagem do sistema de arquivos (portanto, nenhuma nova operação poderá ser iniciada) e concluirá a desmontagem adequada quando não estiver mais ocupada.

    
por 25.06.2009 / 00:22
3

você pode lsof ver se tem algum descritor de arquivo aberto

    
por 24.06.2009 / 19:34
3

você pode usar "fusor -m mountpoint" para ver se alguém está acessando o caminho.

    
por 24.06.2009 / 20:17
2

Deixe umount fazer o trabalho para você:

while ! $(umount /mnt/tera_nas/ 2>/dev/null)
do
    echo "not yet"
    sleep 5m
done
echo "now it is"

Você poderia encurtar o tempo de sono, mas eu não o eliminaria. Ele serve um papel diferente aqui em sua pergunta.

    
por 24.06.2009 / 20:12
1

2 Dennis Williamson :

Eu prefiro usar

umount -l /mnt/tera_nas

no final.

    
por 24.06.2009 / 21:56
1

Use automount para fazer isso automaticamente, o ponto de montagem /mnt/tera_nas/home/ será montado automaticamente quando for acessado e, depois, desmontado assim que não for mais necessário.

# /etc/auto.master
/mnt auto.mnt

# /etc/auto.mnt
tera_nas -t cifs,password='' ://192.168.5.90/share

Então service autofs restart

    
por 25.06.2009 / 02:54