Aufgabe: Ausführen von Blöcken aus 3-5 Befehlen (parallel / im Hintergrund). Beispielblock:
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 &
Wenn es fertig ist, sollte der nächste Block ausgeführt werden. Ich nehme an, dies kann über Sperrdateien erfolgen:
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
Eine Reihe von Methoden zum Überprüfen, ob das Verzeichnis leer ist, finden Sie hier. Sie sind sich nicht sicher, welche Sie verwenden sollen.
Frage : Gibt es einen besseren Weg, dies umzusetzen?
PS Mögliche Methode zur Statusmeldung:
command && report_good_state.sh taskid ; report_state_done.sh taskid; rm /var/lock/myscript/taskN.lock