Bu her iki işlemi de başlatır, ilkini bitirir ve sonra diğerini öldürür:
#!/bin/bash
{ cd ./frontend && gulp serve; } &
{ cd ./backend && gulp serve --verbose; } &
wait -n
pkill -P $$
Nasıl çalışır
Başlat:
{ cd ./frontend && gulp serve; } &
{ cd ./backend && gulp serve --verbose; } &
Yukarıdaki iki komut her iki işlemi de arka planda başlatır.
Bekle
wait -n
Bu, her iki arka plan işinin de sona ermesini bekler.
-n
Seçenek nedeniyle , bu bash 4.3 veya daha iyisini gerektirir.
Öldürmek
pkill -P $$
Bu, geçerli işlemin üst olduğu herhangi bir işi öldürür. Başka bir deyişle, bu hala devam eden arka plan işlemlerini öldürür.
Sisteminizde yoksa pkill
, bu satırı değiştirmeyi deneyin:
kill 0
bu da mevcut süreç grubunu öldürüyor .
Kolayca test edilebilir örnek
Betiği değiştirerek, yüklemeden bile test edebiliriz gulp
:
$ cat script.sh
#!/bin/bash
{ sleep $1; echo one; } &
{ sleep $2; echo two; } &
wait -n
pkill -P $$
echo done
Yukarıdaki komut dosyası şu şekilde çalıştırılabilir bash script.sh 1 3
ve ilk işlem önce sona erer. Alternatif olarak, kişi şu şekilde çalıştırılabilir bash script.sh 3 1
ve ikinci işlem önce sona erer. Her iki durumda da, bunun istendiği gibi çalıştığını görebilirsiniz.
gulp ./fronend/serve && gulp ./backend/serve --verbose
?