J'ai un fichier de script bash où j'exécute un tas de commandes.
#!/bin/bash
umount /media/hdd1
umount /media/hdd2
something1
something2
Mais comme les commandes plus loin dans le fichier fonctionnent avec le disque dur démonté, je dois m'assurer que le démontage a réussi avant de continuer.
Je peux bien sûr vérifier si l'umount a échoué et simplement quitter 1, mais ce n'est pas idéal.
En gros, ce que je voudrais faire, c’est que la commande umount attende jusqu’à ce que le périphérique ne soit plus occupé, puis démonte le disque dur et continue à exécuter le script.
Cela fonctionnerait donc comme ceci:
#!/bin/bash
umount /media/hdd1 # Device umounted without any problems continuing the script..
umount /media/hdd2 # Device is busy! Let's just sit around and wait until it isn't... let's say 5 minutes later whatever was accessing that HDD isn't anymore and the umount umounts the HDD and the script continues
something1
something2
Je vous remercie.
Je pense que le script suivant fera le travail. Il doit être exécuté avec Sudo
(autorisations de superutilisateur).
Il existe une fonction doer
avec une boucle while
qui vérifie avec mountpoint
si un périphérique est monté au point de montage spécifié et essaie de le démonter avec umount
name__. Lorsque la variable logique busy
est définie sur false, la boucle while
est terminée et le script peut commencer à "effectuer certaines tâches".
#!/bin/bash
function doer() {
busy=true
while $busy
do
if mountpoint -q "$1"
then
umount "$1" 2> /dev/null
if [ $? -eq 0 ]
then
busy=false # umount successful
else
echo -n '.' # output to show that the script is alive
sleep 5 # 5 seconds for testing, modify to 300 seconds later on
fi
else
busy=false # not mounted
fi
done
}
########################
# main
########################
doer /media/hdd1
doer /media/hdd2
echo ''
echo 'doing something1'
echo 'doing something2'