मार -9 कार्यक्रम, लेकिन वे अभी भी लटके हुए हैं


9

मैंने अपने सभी बैकग्राउंड जॉब्स को KUbuntu के तहत पहले जमा करने की कोशिश की

kill -9 $(jobs -p)

हालांकि इस कमांड ने तुरंत जैसे संदेश दिया

[१] माझी १

[२] माझी २ मारे गए

मैं अभी भी उनकी प्रक्रियाओं को शीर्ष के आउटपुट में लटका हुआ देख सकता हूं और सीपीयू और मेमोरी usages को uptime और मुफ्त के आउटपुट में नहीं बदला गया है।

इसलिए मुझे लगता है कि मैंने उन्हें ठीक से नहीं मारा होगा। क्या कोई यह बता सकता है कि मुझे क्या हो रहा है और मैं क्या करूँगा

मैंने पाया कि शीर्ष में, यदि प्रकार k और इनपुट PID I एक-एक करके प्रक्रियाओं को मार सकता है। एसओ यह कमांड किल से अलग है?

मैंने भी कहीं ऑनलाइन पाया http://www.ruhr.de/home/smallo/award.html मारने की सिफारिश नहीं के बारे में -9

किल -9 फार्म पत्र का बेकार उपयोग

(भाव उन्मूलन)

नहीं नहीं नहीं। किल -9 का उपयोग न करें।

यह प्रक्रिया को सफाई का मौका नहीं देता है:

1) सॉकेट कनेक्शन बंद करें

2) अस्थायी फ़ाइलों को साफ करें

3) अपने बच्चों को सूचित करें कि वह दूर जा रहा है

4) अपनी टर्मिनल विशेषताओं को रीसेट करें

और इतने पर और इतने पर और इतने पर।

आम तौर पर, 15 भेजें, और एक या दो सेकंड प्रतीक्षा करें, और यदि वह काम नहीं करता है, तो 2 भेजें, और अगर वह काम नहीं करता है, तो भेजें। 1. यदि ऐसा नहीं है, तो प्रोग्राम को बुरी तरह से बर्खास्त करें!

किल -9 का उपयोग न करें। बस फूलों के बर्तन को साफ करने के लिए कंबाइन हारवेस्टर बाहर न लाएं

क्या ये सच है? "सेंड 15", "सेंड 2" और "सेंड 1" का क्या अर्थ है? क्या वे खुद को या "किल -15 पीआईडी", "किल -2 पीआईडी" और "किल -1 पीआईडी" को कमांड कर रहे हैं?

धन्यवाद एवं शुभकामनाएँ!


बाइनरी को हटाना (निष्पादन योग्य फ़ाइल) अपने आप में प्रक्रिया को नहीं मार देगा। फ़ाइल सिस्टम को पता चल जाएगा कि प्रक्रिया उस फ़ाइल का उपयोग कर रही है और प्रक्रिया को फ़ाइल को हटाने के बाद भी उसे "देखने दें"
Jeppe Stig Nielsen

जवाबों:


7

आपकी प्रक्रिया शायद मर चुकी है, लेकिन यह अभी भी प्रक्रिया तालिका प्रविष्टि में दिखाई देती है क्योंकि यह एक "ज़ोंबी प्रक्रिया" है। जब एक बच्चे की प्रक्रिया समाप्त हो जाती है और पूरी तरह से गायब हो जाती है (इसकी प्रक्रिया तालिका प्रविष्टि को छोड़कर) और माता-पिता अपनी समाप्ति की स्थिति प्राप्त नहीं कर पाएंगे (प्रतीक्षा कार्यों में से किसी के भी माध्यम से), इसे ज़ोंबी कहा जाता है ... हत्या (संकेत के माध्यम से) एक अभ्यस्त अभ्यस्त काम क्योंकि यह पहले से ही समाप्त है। आपको जो करने की आवश्यकता है, वह इसकी मूल प्रक्रिया का पता लगाना और थजट को एक सफाई से मारना है, इस प्रकार मारना - 9 का उपयोग नहीं करना चाहिए

यहाँ एक ज़ोंबी को मारने के लिए दो सरल कदम हैं ...

  1. यदि माता-पिता अभी भी जीवित हैं, तो इसे मारने की कोशिश करें (या SIGHUP आप सभी की जरूरत है)
  2. यदि नंबर 1 विफल रहता है, तो कर्नेल में एक बग होता है .... रिबूट आपका दोस्त है और उस बग को ठीक करें: - & gt;

मैं अपनी नौकरियां कमांड लाइन और पृष्ठभूमि में जमा करता हूं, उनके माता-पिता क्या होंगे? और अगर कोई है तो मैं उनके माता-पिता को कैसे ढूंढ सकता हूं?
Tim

उपयोग -f मूल प्रक्रियाओं को देखने के लिए पीएस पर ध्वज।
Jack M.

5

देख man kill उपलब्ध विभिन्न संकेतों की परिभाषा के लिए, लेकिन हाँ।

  • 15 है SIGTERM , और बाहर निकलने के लिए एक कार्यक्रम पूछता है।
  • 2 है SIGINT और कंट्रोल-सी के बराबर है
  • 1 है उच्छ्वास करो , और इंगित करता है कि टर्मिनल लटका हुआ है।

ये एक प्रक्रिया को सूचित करते हैं कि उपयोगकर्ता प्रक्रिया के साथ "किया गया" है, हालांकि वे कुछ अलग-अलग कारणों का संकेत देते हैं। SIGTERM को "करंट कार्य को समाप्त करने के रूप में व्याख्या की जा सकती है, लेकिन फिर बाहर निकलें; एक और शुरू न करें", SIGINT का अर्थ है "जो आप छोड़ दें 'पुनः कर रहे हैं और छोड़ दिया है', SIGHUP का अर्थ है कि किसी की अब कोई बात नहीं सुनी जा रही है (सर्वर प्रक्रिया वैध रूप से अपने कंसोल आउटपुट को बंद करके और चालू रखने के लिए S नाईटअप पर प्रतिक्रिया कर सकती है)।

  • 9 है SIGKILL , और इसमें विशेष यह है कि यह केवल एक ही है जो प्रक्रिया आंतरिक रूप से पकड़ और संभाल नहीं सकती है। यह बस कर्नेल में परिणाम को नियंत्रित करने की प्रक्रिया को कभी वापस नहीं करता है, जिससे इसे साफ करने का कोई मौका नहीं मिलता है।

शीर्ष में, यदि प्रकार k और इनपुट PID I एक-एक करके प्रक्रियाओं को मार सकता है। तो क्या यह कमांड किल के लिए कुछ विकल्पों के बराबर है?
Tim

हां, शीर्ष सिर्फ प्रक्रिया को एक संकेत भेजता है, वही जैसा कि मार करता है। AFAICT, डिफ़ॉल्ट संकेत जो शीर्ष का उपयोग करता है 15 (SIGTERM) है।
puetzk


1

इसका अर्थ है "किल -9" टाइप करने के बजाय "किल -1" या "किल -15" टाइप करें। किल -9 किसी भी चलने वाली प्रक्रिया के सिर में एक कट्टर गोली है, इसे एक गंदे राज्य में मारता है जो मेमोरी लीक, ब्ला ब्ला का कारण बन सकता है।

यदि आप किल -9 टाइप कर रहे हैं और यह काम नहीं कर रहा है, तो मैं यह सुनिश्चित करने के लिए देखूंगा कि प्रक्रिया को रिस्पांड नहीं किया जा रहा है, और आपको उस प्रक्रिया को मारने की अनुमति है।


आप यह सुनिश्चित करने के लिए कैसे सुनिश्चित करेंगे कि प्रक्रिया को रिस्पना नहीं मिल रहा है? चूंकि मेरे पास प्रक्रियाएं हैं, क्या मुझे उस प्रक्रिया को मारने की अनुमति है?
Tim

यदि यह है तो इसकी एक अलग प्रक्रिया संख्या होनी चाहिए। इसलिए यदि आप ps-al करते हैं और आप processA देखते हैं, तो आप -9 processA को मारते हैं, और फिर ps -Al करते हैं और STILL प्रक्रिया में एक प्रक्रिया है, सुनिश्चित करें कि यह SAME प्रक्रिया है, और नया नहीं।
Satanicpuppy

और यह आपको बताएगा कि क्या आपके पास प्रक्रिया को मारने की अनुमति नहीं है।
Satanicpuppy

0

सिग्नल 9 SIGKILL है। एक SIGKILL भेजना OS को तुरंत प्रक्रिया को मारने के लिए कह रहा है, कोई प्रश्न नहीं पूछा गया। प्रक्रिया को पहले से अधिसूचित नहीं किया जाता है और खुद के बाद सफाई करने का कोई मौका नहीं होता है।

सिग्नल 15 SIGTERM है। एक SIGTERM भेजना OS को प्रक्रिया बंद करने के लिए कहना है।

यदि OS को लगता है कि प्रक्रिया IO कर रही है, या यदि यह एक ज़ोंबी है (एक बच्चे की प्रक्रिया जिसके माता-पिता इसके बाद साफ नहीं करते) तो SIGKILL को नजरअंदाज किया जा सकता है।

SIGTERM को एप्लिकेशन द्वारा अनदेखा किया जा सकता है, लेकिन यह अनुशंसा नहीं की जाती है कि अनुप्रयोग ऐसा करते हैं, क्योंकि OSS SIGTERM को शटडाउन के दौरान भेजते हैं, कुछ समय बाद SIGKILL द्वारा यदि कोई प्रोग्राम अभी भी चल रहा है।

नोट: कमांड लाइन kill हमेशा ओएस को आवेदन के लिए एक संकेत भेजने के लिए कह रहा है, जो कि प्रक्रिया के मालिक आदि के आधार पर यह कर सकता है या नहीं कर सकता है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.