Bash : attendre la fin d'une commande
Résolu
IvyAlice
Messages postés
397
Statut
Membre
-
IvyAlice Messages postés 397 Statut Membre -
IvyAlice Messages postés 397 Statut Membre -
Bonjour à tous,
Je suis ennuyée car j'ai fait un scripte qui est sensé
- voir si un disque externe est monté
- s'il est monté il le démonte
- dans les 2 cas il le formate
- il le remonte
- il fait un backup dessus
Toutes les étapes semblent être OK sauf une.
En effet il ne le formate pas.
je soupçonne que le bash n'attendent pas la fin du formatage pour monter le device et qu'il est tellement rapide qu'en fait le mkfs n'a pas le temps de commencer.
Comment puis-je forcer le scripte à terminer le mkfs avant de remonter le device ?
voici un extrait du code :
--------------------------------------------------------
device="sde1"
disqueMonte=`mount | grep -i "/media/SAN"`
if [ "$disqueMonte" = "" ]; then
echo "/media/SAN n'est PAS monte... $device va etre formate "
else
echo "/media/SAN est monte il va etre de-monte et $device va etre formate"
`umount /media/SAN`
fi
`mkfs.ext3 /dev/"$device"`
`mount /dev/"$device" /media/SAN`
- suite du code -
--------------------------------------------------------
Merci d'avance pour vos conseils et suggestions.
Ivy
Je suis ennuyée car j'ai fait un scripte qui est sensé
- voir si un disque externe est monté
- s'il est monté il le démonte
- dans les 2 cas il le formate
- il le remonte
- il fait un backup dessus
Toutes les étapes semblent être OK sauf une.
En effet il ne le formate pas.
je soupçonne que le bash n'attendent pas la fin du formatage pour monter le device et qu'il est tellement rapide qu'en fait le mkfs n'a pas le temps de commencer.
Comment puis-je forcer le scripte à terminer le mkfs avant de remonter le device ?
voici un extrait du code :
--------------------------------------------------------
device="sde1"
disqueMonte=`mount | grep -i "/media/SAN"`
if [ "$disqueMonte" = "" ]; then
echo "/media/SAN n'est PAS monte... $device va etre formate "
else
echo "/media/SAN est monte il va etre de-monte et $device va etre formate"
`umount /media/SAN`
fi
`mkfs.ext3 /dev/"$device"`
`mount /dev/"$device" /media/SAN`
- suite du code -
--------------------------------------------------------
Merci d'avance pour vos conseils et suggestions.
Ivy
A voir également:
- Bash : attendre la fin d'une commande
- Bingo bash free - Télécharger - Divers Jeux
- Bash pause ✓ - Forum Shell
- Bash addition - Forum Programmation
- Bash permission non accordée - Forum Shell
- Bash list ✓ - Forum Shell
7 réponses
Salut,
La commande 2 sera exécutée si et seulement la commande 1 se finie avec succès
commande1 && commande2
La commande 2 sera exécutée si et seulement la commande 1 se finie avec succès
Salut Jipicy,
Merci pour ta réponse.
J'ai fait plusieurs essai, mais à chaque fois le formatage ne s'effectue pas, j'ai donc utilisé un fichier log :
#------------------------------------------------------
temps=`date`
echo "debut du formatage de $device $temps" >> $log
`mkfs.ext3 /dev/"$device" &` 2>>$log
`wait`
temps=`date`
echo "fin du formatage de $device $date"
#------------------------------------------------------
et dans le fichier log on ne voit que :
debut du formatage de sde1 Wed Feb 24 17:48:01 CET 2010
ensuite de quoi, la fin du scripte s'exécute normalement, sauf qu'il ne log plus Oo (si je remonte le HD par la suite, il le fait, mais jamais je n'ai le "fin du formatage de ... " ni "le HD a ete monte" )
Je ne sais pas ce qui se passe(rien manifestement), je fais tjr cette commande mkfs quand je le fais à la main et ça fonctionne
Est-ce que tu as une idée du pourquoi du comment ?
Ivy
Merci pour ta réponse.
J'ai fait plusieurs essai, mais à chaque fois le formatage ne s'effectue pas, j'ai donc utilisé un fichier log :
#------------------------------------------------------
temps=`date`
echo "debut du formatage de $device $temps" >> $log
`mkfs.ext3 /dev/"$device" &` 2>>$log
`wait`
temps=`date`
echo "fin du formatage de $device $date"
#------------------------------------------------------
et dans le fichier log on ne voit que :
debut du formatage de sde1 Wed Feb 24 17:48:01 CET 2010
ensuite de quoi, la fin du scripte s'exécute normalement, sauf qu'il ne log plus Oo (si je remonte le HD par la suite, il le fait, mais jamais je n'ai le "fin du formatage de ... " ni "le HD a ete monte" )
Je ne sais pas ce qui se passe(rien manifestement), je fais tjr cette commande mkfs quand je le fais à la main et ça fonctionne
Est-ce que tu as une idée du pourquoi du comment ?
Ivy
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut lami20j
Je n'ai pas vu ta réponse avant de poster la mienne.
Bon j'ai lancé la moulinette à la main avant d'oublier de le faire, je testerai donc tout ça demain.
Jipicy : ah je croyais qu'on devait mettre ces `` chaque fois qu'on voulait lancer une commande ou alors c'est chaque fois qu'on veut mettre le résultat d'une commande dans une variable ?
En tout cas merci pour votre aide, et je vous tient au courant de la suite des évènements demain en fin d'aprem.
Ivy
Je n'ai pas vu ta réponse avant de poster la mienne.
Bon j'ai lancé la moulinette à la main avant d'oublier de le faire, je testerai donc tout ça demain.
Jipicy : ah je croyais qu'on devait mettre ces `` chaque fois qu'on voulait lancer une commande ou alors c'est chaque fois qu'on veut mettre le résultat d'une commande dans une variable ?
En tout cas merci pour votre aide, et je vous tient au courant de la suite des évènements demain en fin d'aprem.
Ivy
Bonjour,
Je n'ai testé qu'aujourd'hui, voici ce que j'ai remarqué :
# 1 ...............................................
mkfs.ext3 /dev/"$device" 2>>$log &
wait
#..................................................
fonctionne pour autant que le lance le scripte manuellement, si c'est le crontab qui le lance, j'ai le message suivant dans $log :
line 22: mkfs.ext3: command not found
et là effectivement il passe à côté du formatage.
Je n'ai testé qu'aujourd'hui, voici ce que j'ai remarqué :
# 1 ...............................................
mkfs.ext3 /dev/"$device" 2>>$log &
wait
#..................................................
fonctionne pour autant que le lance le scripte manuellement, si c'est le crontab qui le lance, j'ai le message suivant dans $log :
line 22: mkfs.ext3: command not found
et là effectivement il passe à côté du formatage.