जब मैं make
शेल से कमांड ( एक बड़े प्रोजेक्ट पर) चलाता हूं , तो मैं प्रक्रिया को रोकने और शेल पर वापस जाने के लिए Ctrl-Z टाइप कर सकता हूं। इसके बाद, मैं fg
इस प्रक्रिया को जारी रखने के लिए दौड़ सकता हूं ।
मैं इसे स्वचालित करने के लिए एक शेल स्क्रिप्ट लिखने की कोशिश कर रहा हूं (विशेष रूप से, मेरे सीपीयू तापमान को हर कुछ सेकंड में जांचने के लिए और प्रक्रिया को रोक दें यदि यह बहुत गर्म हो जाता है, क्योंकि मेरा कंप्यूटर ओवरहेटिंग होने का खतरा है)। मेरा पहला प्रयास इस तरह काम किया (सरलीकृत):
make &
subpid="$!"
sleep 2
# If the CPU temperature is too high...
kill -STOP "$subpid"
sleep 2
# If the CPU temperature has dropped to safe levels...
kill -CONT "$subpid"
wait "$subpid"
दुर्भाग्य से, यह काम नहीं किया; इस प्रक्रिया को SIGSTOP भेजने से इसे विराम नहीं मिला (जैसा कि टर्मिनल में आउटपुट भेजने के लिए इसके जारी रहने से स्पष्ट हुआ)। मैं make &
कमांड लाइन पर चला गया , SIGSTOP भेजा, और प्रक्रिया की स्थिति की जाँच की ps
; इसे बंद कर दिया गया था (और जब मैंने SIGCONT भेजा तो फिर से शुरू किया गया), लेकिन यह अभी भी उत्पादन को कम कर रहा था और मेरे मूल तापमान को बढ़ा रहा था! Ctrl-Z के साथ इसे रोकना कभी भी यह समस्या नहीं थी, लेकिन मुझे नहीं पता कि स्क्रिप्ट में यह कैसे करना है।
Ctrl-Z किस चीज़ से अलग है kill -STOP
, और मैं शेल स्क्रिप्ट में पूर्व का व्यवहार कैसे प्राप्त कर सकता हूं?
make
पुनरावृत्ति से चलाया जा रहा है। वास्तव में, मुझे लगता है कि यह कई स्तरों तक गहरा है।