Bonjour,

je suis en train d'automatiser la création de disques virtuels orientés VBox (fichiers .vdi, donc), et je vais de surprise en surprise, concernant le fonctionnement aléatoire de mon script.

Certaines parties n'ont pas été touchées depuis plusieurs semaines, ce n'est pas sur elles que je travaille, et pourtant ce sont elles qui échouent, aléatoirement ; je me demande si ce n'est pas lié au multi-tâches et à d'autres choses similaires qui se passent dans notre dos et qu'on ne voit pas...

Deux exemples :
extrait 1
Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
sync
 
# -2- connexion du fichier-disque
echo "  connexion du fichier $fichier sur le point de montage $vdisque..."
vdfuse -t VDI -f $fichier $vdisque > /dev/null 2>&1
# erreur 1 intermittente ici, malgré le sync au dessus, et pourtant
# mount montre que le fichier est monté ! Alors pourquoi erreur 1 ? 
err=$?
La solution (mais est-ce que le fait que ça fonctionne 10 ou 20 fois c'est valable ? Est-ce que ça ne va pas planter à la 21e fois ?) pour le moment consiste à rajouter sleep 0.5 juste avant l'appel à vdfuse mais franchement, ça fait chichi...
Ça fait chichi parce que j'ai mis 0.5 complètement au pif, ça aurait pu être 0.8 ou 0.3, ou pourquoi pas 0.1 ou tout autant 10... J'aime pas les machins pifométriques

Et question subsidiaire, à quoi sert sync s'il faut le compléter / le blinder par un sleep ?
Quelqu'un connaît une autre commande, moins aléatoire et plus définitive ?

extrait 2

Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
sync
 
# -3b- formatage partition
echo "  formatage de la partition $vdisque/$partoch..."
mke2fs -q -t ext4 -F -F $vdisque/$partoch
err=$?
Même topo, un message d'erreur abscons généré par mke2fs que je n'avais jamais vu lors des précédents tests, solutionné (really ?) en rajoutant un sleep 0.5 après le sync qui termine / clôture l'étape précédente...

Bonne journée,