मैं निश्चित रूप से EDIT # 3 समाधान (bellow देखें) पसंद करता हूं ।
अगर इसकी नहीं एक ही खोल में एक का उपयोग करते हुए शर्त के साथ पाश पर ps -p सच लौटने। प्रोसेसर के उपयोग को कम करने के लिए लूप में एक नींद रखो ।
while ps -p <pid> >/dev/null 2>&1
do
sleep 10
done
या अगर आपका UNIX समर्थन कर रहा है / खरीद रहा है (उदाहरण के लिए HP-UX अभी भी नहीं है)।
while [[ -d /proc/<pid> ]]
do
sleep 10
done
अगर आप टाइमआउट चाहते हैं
timeout=6 # timeout after 1mn
while ((timeout > 0)) && ps -p <pid> >/dev/null 2>&1
do
sleep 10
((timeout -= 1))
done
EDIT # 1
एक और तरीका है: क्रोन का उपयोग न करें । अपनी नौकरियों को स्टैक करने के लिए बैच कमांड का उपयोग करें ।
उदाहरण के लिए, आप अपनी सभी नौकरियों को प्रतिदिन ढेर कर सकते हैं। बैच को कुछ समानता की अनुमति देने के लिए ट्यून किया जा सकता है इसलिए एक अवरुद्ध काम सभी स्टैक को रोक नहीं पाएगा (यह ऑपरेटिंग सिस्टम पर निर्भर करता है)।
EDIT # 2
अपने होम डायरेक्टरी में एक पाँटो बनाएँ:
$ mkfifo ~/tata
अपनी नौकरी के अंत में:
echo "it's done" > ~/tata
दूसरे काम की शुरुआत में (जो इंतजार कर रहा है):
cat ~/tata
यह मतदान नहीं है यह पुराना अच्छा अवरोधक IO है।
EDIT # 3
संकेतों का उपयोग करना:
स्क्रिप्ट की शुरुआत में (जो) इंतज़ार कर रहे हैं:
echo $$ >>~/WeAreStopped
kill -STOP $$
आपकी लंबी नौकरी के अंत में:
if [[ -f ~/WeAreStopped ]] ; then
xargs kill -CONT < ~/WeAreStopped
rm ~/WeAreStopped
fi