कैसे मारना है प्रक्रियाओं को मारने के लिए अनुत्तरदायी -9


9

मैं अपने SGI Altix 450 पर चल रही प्रक्रियाओं SLES 10.1 को देख रहा हूं, प्रतीत होता है कि चलना बंद कर रहा है (यानी घंटों तक उनके लॉग में आगे उत्पादन प्रदान नहीं करता है)। इस बिंदु पर मैं आपत्तिजनक प्रक्रिया को मारना चाहता हूं ताकि मैं इसे पुनः आरंभ कर सकूं। शीर्ष दिखाता है कि प्रक्रिया राज्य (आर) में है। हालांकि जब मैं इसे मारने की कोशिश करता हूं तो कुछ नहीं होता है। यहां तक ​​कि जब मैं किल -9 का उपयोग करता हूं तब भी यह सुस्त होता है। इस मामले में मैं मशीन को पुनरारंभ करने के अलावा और क्या कर सकता हूं?


2
क्या वे निश्चित रूप से एक ही प्रक्रिया आईडी हैं? ऐसा नहीं है कि आप इस प्रक्रिया को मार रहे हैं और कुछ डेमन एक ही नाम के साथ एक प्रक्रिया को फिर से शुरू कर रहे हैं?
सी.के.

जवाबों:


9

यह संभव है कि प्रक्रिया को मार दिया जाए, लेकिन माता-पिता को इसकी वापसी के मूल्य का इंतजार करना पड़ता है। उस मामले में इसे मार दिए जाने के बाद यह राज्य 'जेड' में होगा और 'आर' नहीं। उस स्थिति में आपको आदेश ppidका उपयोग करके प्रक्रिया psढूंढनी चाहिए और मूल प्रक्रिया को भी मारना चाहिए (यदि आप वास्तव में सुनिश्चित हैं कि यह किसी भी समस्या का कारण नहीं होगा)।

दूसरा मामला यह हो सकता है कि किसी कारणवश प्रक्रिया टटी की तरह मारे जाने के बाद फिर से शुरू हो रही है। उस स्थिति में जब भी आप मार -9 करते हैं, तो प्रोसेस आईडी बदल जाना चाहिए। यह देखें कि क्या हर बार जब आप इसे मारने की कोशिश कर रहे हैं तो प्रक्रिया आईडी बदल रही है।


मुझे विश्वास है कि मैं मूल प्रक्रिया को मारने की कोशिश कर रहा हूं। यह मूल प्रक्रिया है जो (R) स्थिति में है। pstree इसकी पुष्टि करता है। बच्चे की प्रक्रिया सभी (जेड) ज़ोंबी राज्यों में होती है। Ppid स्थिर रहता है, इस प्रकार मुझे विश्वास नहीं होता कि यह बस पुनः आरंभ हो रहा है।
जेरेड ब्राउन

यदि आप मूल प्रक्रिया (और उसके माता-पिता की प्रक्रिया और इसी तरह) को मारते हैं, तो यह init उन बच्चों की प्रक्रिया का माता-पिता बन जाएगा जो 'Z' राज्य में हैं और उनका रिटर्न वैल्यू जमा करते हैं। तो 'जेड' चिल्ड्स को हटाने का सबसे अच्छा तरीका है, जिनके माता-पिता अपने रिटर्न वैल्यू नहीं ले रहे हैं, माता-पिता को भी मारना है ताकि इनिट मृत बाल प्रक्रियाओं के माता-पिता बन जाएं।
सौरभ बड़जात्या

यह मुद्दा है कि मैं कर रहा हूँ। माता-पिता की प्रक्रिया को मारने के माध्यम से एक -9 संकेत भेजना इसे समाप्त नहीं कर रहा है।
जारेड ब्राउन

1
माता-पिता को SITEUP भेजना कभी-कभी पर्याप्त होता है। आपको हमेशा माता-पिता को मारना नहीं पड़ता है।
थॉमस

2
मुझे क्षमा करें, SIGCHLD। (सुबह बहुत जल्दी)
थॉमस

2

प्रक्रिया कुछ सिस्टम संसाधन पर इंतजार कर रही है, शायद एनएफएस? वह इसे 'जाने' की अनुमति नहीं दे रहा है। इस से परे कुछ समाधान सुनना पसंद करेंगे मेरा ...

बॉक्स को रिबूट करें, या प्रक्रिया को चारों ओर बैठने दें।

मुझे आश्चर्य है कि अगर आप इसे अधिक सीपीयू के सेवन से रोकने के लिए किल -STOP {पीआईडी} के माध्यम से प्रक्रिया को रोक सकते हैं।

इसे फिर से शुरू करना आस-पास बैठी एक और रुकी हुई प्रक्रिया के साथ भी संभव है, लेकिन इसके लिए एक सूची पोर्ट या साझा मेमोरी सेगमेंट की आवश्यकता हो सकती है जो अभी भी अन्य प्रक्रिया द्वारा उपयोग में है।


1
क्या ऐसी प्रक्रिया नहीं होगी जो एनएफएस या कुछ I / O फ़ंक्शन पर प्रतीक्षा कर रही थी ताकि वह (D) राज्य में पूरा हो सके? ये प्रक्रियाएँ (R) अवस्था में हैं।
जेरेड ब्राउन

जब मैं lsएक s3fs माउंट पर कमांड करता हूं तो यही कभी-कभी मेरे साथ हो रहा होता है । lsप्रक्रिया भी साथ नहीं मारूंगा kill -9जब तक मैं के साथ अनमाउंट मजबूरumount -l
मार्को Marsala

0

क्या आपने अभी तक dmesg की जाँच की है? मैंने कर्नेल के आतंक के बाद इसे देखा है; पुनर्प्राप्त करने का एकमात्र तरीका रिबूट (अधिमानतः जल्द ही) है - और फिर एक पैच कर्नेल प्राप्त करें।

सामान्य अकुशल प्रक्रिया डी राज्य में होगी, आर नहीं।


क्या डी राज्य के बारे में कुछ भी किया जा सकता है रिबूट के अलावा अन्य कठिन प्रक्रियाएं मर जाती हैं? ppid = 1
प्रो। मोरियार्टी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.