मैं अनुमान लगा रहा हूं कि आप जिस समस्या को हल करना चाहते हैं, वह यह है कि आपके बॉक्स पर कुछ प्रक्रिया चल रही है जो कभी-कभी गलत व्यवहार करती है, और हमेशा एक कोर को पेग करते हुए बैठती है।
पहली चीज जो आप करना चाहते हैं, वह उस कार्यक्रम को ठीक करने का प्रयास करना है जो पागल हो जाता है। यह अब तक का सबसे अच्छा समाधान है। मैं मान रहा हूँ कि यह संभव नहीं है, या आपको अपने बॉक्स को उसके नियत समय तक चालू रखने के लिए एक त्वरित kluge की आवश्यकता है।
आप कम से कम, अपनी स्क्रिप्ट को केवल उस प्रोग्राम को हिट करने के लिए सीमित करना चाहते हैं जिस पर आप चिंतित हैं। यह सबसे अच्छा होगा यदि अनुमतियाँ आपकी स्क्रिप्ट को इस तरह सीमित करें (जैसे, आपकी स्क्रिप्ट उपयोगकर्ता एक्स के रूप में चलती है, एक्स के रूप में चलने वाली एकमात्र अन्य चीज प्रोग्राम है)।
इससे भी बेहतर यह होगा ulimit -t
कि प्रोग्राम के उपयोग के लिए कुल सीपीयू समय की मात्रा को सीमित करने के लिए कुछ का उपयोग किया जाए। इसी तरह, यदि यह सभी मेमोरी का उपभोग करता है, तो जांच करें ulimit -v
। कर्नेल इन सीमाओं को लागू करता है; विवरण के लिए bash
मैनपेज (यह एक शेल निर्मित है) और setrlimit(2)
मैनपेज देखें।
यदि समस्या एमोक चलाने की प्रक्रिया नहीं है, लेकिन इसके बजाय बस बहुत सी प्रक्रियाएं चल रही हैं, तो एक्स को चलाने से अधिक रोकने के लिए लॉकिंग के कुछ रूप को लागू करें (या - यह परिचित होना चाहिए- ulimit -u
)। आप उन प्रक्रियाओं के शेड्यूलर प्राथमिकता को बदलने (उपयोग करने nice
या renice
), या इससे भी अधिक कठोर के लिए, sched_setscheduler
नीति को बदलने के लिए उपयोग करने पर विचार कर सकते हैं SCHED_IDLE
।
यदि आपको और भी अधिक नियंत्रण की आवश्यकता है, तो एक नियंत्रण समूह (cgroups) पर एक नज़र डालें। आपके द्वारा चलाए जा रहे कर्नेल के आधार पर, आप वास्तव में CPU समय, मेमोरी, I / O इत्यादि की मात्रा को सीमित कर सकते हैं, जो कि प्रक्रियाओं का एक पूरा समूह उपभोग करता है। नियंत्रण समूह काफी लचीले होते हैं; वे संभावना कर सकते हैं कि आप जो भी करने की कोशिश कर रहे हैं, बिना किसी नाजुक कलगी के। आर्क लिनक्स विकी में cgroups के लिए एक परिचय है जो पढ़ने के लायक है, जैसा कि नील ब्राउन के Lg में cgroups श्रृंखला है ।
while [ 1 ]
मुझे आश्चर्य है कि अकेले इस स्क्रिप्ट का कितना सीपीयू उपभोग करने वाला है। इसके अलावा,kill -9
लगातार चलने वाली स्क्रिप्ट में 3 कॉल ? इससे मुझे ठंड लग रही है ...