यह दोनों प्रक्रियाएं शुरू करता है, पहले खत्म होने का इंतजार करता है और फिर दूसरे को मारता है:
#!/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?