Bash – uruchamianie skryptów współbieżnie
Czasami w bash’u zachodzi potrzeba aby uruchomić jednym skryptem kolejne 2 współbieżnie i zaczekać na ich zakończenie. Możemy to zrealizować tak:
#!/bin/bash ############################################################################### echo Odpalam skrypt A ... ./a.sh && true || tee fail_A & ############################################################################### echo Odpalam skrypt B ... ./b.sh && true || tee fail_B & ############################################################################### wait < <(jobs -p) ############################################################################### test -f fail_A && echo A failed. && exit test -f fail_B && echo B failed. && exit ############################################################################### echo "Koniec..."
Gdzie skrypt A to:
#!/bin/bash for i in {1..10} do echo "A: "$i sleep 1 done
skrypt B to:
#!/bin/bash for i in {1..10} do echo "B: "$i sleep 2 done
Skrypt główny zaczeka na skończenie skryptów A i B, które są wykonywane współbieżnie. Jeśli którykolwiek ze skryptów A lub B się wysypie, skrypt główny nie będzie kontynuowany.