यह दोनों प्रक्रियाएं शुरू करता है, पहले खत्म होने का इंतजार करता है और फिर दूसरे को मारता है:
#!/bin/bash
{ cd ./frontend && gulp serve; } &
{ cd ./backend && gulp serve --verbose; } &
wait -n
pkill -P $$
यह काम किस प्रकार करता है
शुरू:
{ cd ./frontend && gulp serve; } &
{ cd ./backend && gulp serve --verbose; } &
उपरोक्त दोनों कमांड पृष्ठभूमि में दोनों प्रक्रियाओं को शुरू करते हैं।
रुको
wait -n
यह या तो पृष्ठभूमि की नौकरी के समाप्त होने की प्रतीक्षा करता है।
की वजह से -n
विकल्प, इस बैश 4.3 या बेहतर की आवश्यकता है।
को मार डालो
pkill -P $$
यह किसी भी नौकरी को मारता है जिसके लिए वर्तमान प्रक्रिया माता-पिता है। दूसरे शब्दों में, यह किसी भी पृष्ठभूमि प्रक्रिया को मारता है जो अभी भी चल रहा है।
यदि आपके सिस्टम में नहीं है pkill
, तो इस लाइन को बदलने का प्रयास करें:
kill 0
जो वर्तमान प्रक्रिया समूह को भी मारता है ।
आसानी से परीक्षण योग्य उदाहरण
स्क्रिप्ट को बदलकर, हम इसे gulp
स्थापित किए बिना भी परीक्षण कर सकते हैं :
$ cat script.sh
#!/bin/bash
{ sleep $1; echo one; } &
{ sleep $2; echo two; } &
wait -n
pkill -P $$
echo done
उपरोक्त स्क्रिप्ट के रूप में चलाया जा सकता है bash script.sh 1 3
और पहली प्रक्रिया पहले समाप्त हो जाती है। वैकल्पिक रूप से, एक इसे चला सकता है bash script.sh 3 1
और दूसरी प्रक्रिया पहले समाप्त होगी। किसी भी मामले में, कोई भी यह देख सकता है कि यह वांछित के रूप में संचालित होता है।
gulp ./fronend/serve && gulp ./backend/serve --verbose
?