Tâche: exécuter des blocs composés de 3 à 5 commandes (en parallèle / en arrière-plan). Exemple de bloc:
dd if=/dev/urandom of=/mnt/1/x bs=1024 count=1024000000 &
dd if=/dev/urandom of=/mnt/2/x bs=1024 count=1024000000 &
dd if=/dev/urandom of=/mnt/3/x bs=1024 count=1024000000 &
Une fois terminé, le bloc suivant devrait s'exécuter. Je suppose que cela peut être fait via des fichiers de verrouillage:
task1.sh:
real_task1 real_param1 ; rm /var/lock/myscript/task1.lock
task2.sh:
real_task2 real_param1 ; rm /var/lock/myscript/task2.lock
...
taskgen.sh:
# loop
# while directory isn't empty - wait...
gen_tasks.pl # build task files from some queue
for i in 1 2 3; do touch /var/lock/myscript/task$i.lock ; done
./task1.sh &
./task2.sh &
./task3.sh &
# if task1.sh doesn't exits then exit, else loop waits for files to be deleted
Un certain nombre de méthodes pour vérifier si le répertoire est vide peuvent être trouvées ici , je ne sais pas lequel utiliser;
Question : une meilleure façon de mettre en œuvre cela?
PS Méthode de rapport d'état possible:
command && report_good_state.sh taskid ; report_state_done.sh taskid; rm /var/lock/myscript/taskN.lock