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.

5/5 - (1 vote)

admin

Love Linux!

Możesz również polubić…