Ini memulai kedua proses, menunggu yang pertama selesai dan kemudian membunuh yang lain:
#!/bin/bash
{ cd ./frontend && gulp serve; } &
{ cd ./backend && gulp serve --verbose; } &
wait -n
pkill -P $$
Bagaimana itu bekerja
Mulailah:
{ cd ./frontend && gulp serve; } &
{ cd ./backend && gulp serve --verbose; } &
Dua perintah di atas memulai kedua proses di latar belakang.
Tunggu
wait -n
Ini menunggu pekerjaan latar belakang untuk berakhir.
Karena -nopsi, ini membutuhkan bash 4.3 atau lebih baik.
Membunuh
pkill -P $$
Ini membunuh pekerjaan apa pun yang prosesnya saat ini adalah induknya. Dengan kata lain, ini membunuh semua proses latar belakang yang masih berjalan.
Jika sistem Anda tidak memiliki pkill, coba ganti baris ini dengan:
kill 0
yang juga membunuh grup proses saat ini .
Contoh mudah diuji
Dengan mengubah skrip, kami dapat mengujinya bahkan tanpa gulpdiinstal:
$ cat script.sh
#!/bin/bash
{ sleep $1; echo one; } &
{ sleep $2; echo two; } &
wait -n
pkill -P $$
echo done
Script di atas dapat dijalankan sebagai bash script.sh 1 3dan proses pertama berakhir terlebih dahulu. Atau, seseorang dapat menjalankannya bash script.sh 3 1dan proses kedua akan berakhir terlebih dahulu. Dalam kedua kasus, orang dapat melihat bahwa ini beroperasi seperti yang diinginkan.
gulp ./fronend/serve && gulp ./backend/serve --verbose?