कमांड-लाइन / टेक्स्ट-मोड प्रोग्राम को मारने के लिए क्रैश-कोर्स
@ AFH की टिप्पणी के बारे में विस्तार से बताने के लिए, यदि "SRM" एक कंसोल (कमांड-लाइन इंटरफ़ेस) प्रोग्राम है, और आपने इसे टर्मिनल से चलाया है, तो बस हिट करें Ctrl-z, क्योंकि यह आपके टर्मिनल को अग्रभूमि प्रक्रिया को भेजता है जो उस SIGSTOPसिग्नल का प्रबंधन करता है और इसे भेजता है। पृष्ठभूमि के लिए। फिर आप fgशेल कमांड को निष्पादित करके "इसे वापस ला सकते हैं" - यह इंटरैक्टिव गोले द्वारा लागू तथाकथित "नौकरी नियंत्रण" का एक हिस्सा है और इसका मतलब पृष्ठभूमि वाली प्रक्रिया को अग्रभूमि में लाना है (इसलिए "एफजी") जिसमें प्रक्रिया भेजना शामिल है। SIGCONTअन्य चीजों के बीच संकेत।
बेशक, एक प्रक्रिया को रोकने के लिए, इसे रोकें। लिनक्स-आधारित OS सहित यूनिक्स-वाई सिस्टम पर, यह प्रक्रिया विशेष संकेतों में से एक को भेजकर किया जाता है-आमतौर पर SIGTERMया SIGINT। Ctrl-cएक टर्मिनल में मारना जो एक प्रक्रिया चलाता है बनाता है जो प्रक्रिया को SIGINTसिग्नल भेजता है । killकार्यक्रम मनमाना प्रक्रियाओं मनमाने ढंग से संकेत भेजने के लिए इस्तेमाल किया जा सकता है।
उपयोग करने killमें समस्या यह है कि इसके अधिकांश उपयोगों के लिए उपयोगकर्ता को सिग्नल भेजने के लिए प्रक्रिया के तथाकथित "पीआईडी" को जानना पड़ता है। पीआईडी एक है पी rocess आईडी entifier-एक पूर्णांक संख्या ≥ 1 सभी प्रक्रियाओं वर्तमान में ओएस द्वारा प्रबंधित भर में अद्वितीय।
शेल की नौकरी पर नियंत्रण आसान हो जाता है क्योंकि इसमें कुछ प्रक्रियाएं होती हैं जो उन प्रक्रियाओं का उल्लेख करती हैं जिन्हें आप प्रबंधित करते हैं: यदि आप वर्तमान में सक्रिय प्रक्रिया को हिट करके देखते हैं, Ctrl-zतो आप jobsउस शेल द्वारा प्रबंधित प्रक्रियाओं की सूची देखने के लिए कमांड का उपयोग कर सकते हैं। उदाहरण के लिए, मैंने सिर्फ एक उदाहरण को निलंबित कर दिया है mutt
और jobsउसके बाद चलता हूं; यहाँ मैं क्या देख रहा हूँ:
~$ jobs
[1]+ Stopped mutt
उस [1]+बिट को देखें। 1नौकरी पहचानकर्ता खोल से उस प्रक्रिया को करने के लिए सौंपा है। +एक "संभाल" पिछले backgrounded प्रक्रिया का उल्लेख करने के लिए है।
तो अब या तो उपयोग कर सकते हैं %1या %+साथ killमें की तरह, उस प्रक्रिया का उल्लेख करने के आदेश
$ kill %1
या
$ kill %+
… और वे सभी SIGTERMउस एकल पृष्ठभूमि वाली प्रक्रिया को भेज देंगे ।
कि कैसे आप एक दुर्व्यवहार कंसोल प्रोग्राम को मार सकते हैं।
सिंगल्स पर अधिक
ध्यान दें कि उन SIGINTऔर SIGTERMसंकेतों को उस प्रक्रिया द्वारा "नियंत्रित" किया जा सकता है जो उनमें से एक को प्राप्त हुआ था। यह प्रक्रिया को छोड़ने से पहले कुछ सफाई कार्यों को करने की अनुमति देता है।
लेकिन कभी-कभी एक प्रक्रिया "लटका" हो सकती है - एक प्रोग्रामिंग बग के कारण सीपीयू पर एक अंतहीन लूप निष्पादित करके या कुछ "मृत" संसाधन पर फ़ाइल से पढ़ने / लिखने की कोशिश करके अटक जाने से जैसे कि डिस्कनेक्ट किया गया नेटवर्क शेयर। इन मामलों में पहुंचाने SIGINTया SIGTERMनहीं आम तौर पर "unwedge" प्रक्रिया के लिए सक्षम हो जाएगा।
ऐसे मामलों से निपटने के लिए, एक विशेष संकेत मौजूद है SIGQUIT, जिसे एक अच्छी तरह से ज्ञात संख्या को सौंपा गया है, "9"। एक प्रक्रिया को भेजना यह संकेत मात्र ओएस को जबरन प्रक्रिया में उलट देता है, इसके बिना हस्तक्षेप करने का कोई मौका नहीं है। इसीलिए आपने सबसे अधिक शायद kill -9 $pidकुछ डॉक्स में उस कमी को देखा है ।
अन्य विकल्प
अन्य विकल्प भी हैं।
सबसे पहले, वहाँ "उपयोगकर्ता के अनुकूल" कार्यक्रम htopमौजूद हैं, जो आपको चलने वाली प्रक्रियाओं की खोज करने योग्य सूची के साथ प्रस्तुत करते हैं और आपको उनमें से किसी भी विकल्प को चुनने के लिए अनुमति देते हैं।
ग्राफिकल डेस्कटॉप वातावरण- जैसे कि GNOME, XFCE, KDE और अन्य- आमतौर पर ऐसा करने के लिए GUI ऐप प्रदान करते हैं।
दूसरा, उन मामलों के लिए दुर्व्यवहार की प्रक्रियाओं से निपटने के लिए अधिक "हैकी" तरीके मौजूद हैं, जहां "कार्य प्रबंधक" अनुपलब्ध हैं या किसी कारण से बिल के लायक नहीं हैं। यहाँ कुछ विशेष क्रम में उनमें से कुछ हैं:
xkillउपयोगिता (डेबियन और पर इसके व्युत्पन्न क्या है x11-utilsपैकेज), जब चलाने के लिए, आप एक विकर्ण पार के आकार का कर्सर जिसके साथ आप उस पर cicking द्वारा किसी भी खिड़की का चयन करना चाहिए पता चलता है और xkillजबरन प्रक्रिया है जो कि से खिड़की का मालिक डिस्कनेक्ट हो जाएगा एक्स सर्वर (प्रोग्राम जो आपके सभी जीयूआई का प्रतिपादन करता है)।
इस क्रिया का प्रभाव प्रक्रियाओं के बीच भिन्न होता है, लेकिन यदि आप xkillएक टर्मिनल विंडो SIGHUPबनाते हैं तो यह उन प्रक्रियाओं को संकेत भेजेगा जो इसे प्रबंधित करती हैं, और यह आमतौर पर उन्हें छोड़ देता है।
pkillउपयोगिता (डेबियन और उसके व्युत्पन्न क्या है पर procpsपैकेज) जिसका नाम एक निश्चित स्ट्रिंग से मेल खाता प्रक्रियाओं का एक सेट करने के लिए एक संकेत भेजने के लिए इस्तेमाल किया जा सकता।
इसलिए, यदि आप एक srmप्रक्रिया को मारना चाहते हैं जो आप जानते हैं कि आपके सिस्टम पर चल रही है, तो आप चला सकते हैं
$ pkill -9 srm
srmसिस्टम पर चलने वाली नामित सभी प्रक्रियाओं को नीचे लाने के लिए ।
srmडिफ़ॉल्ट रूप से 38 पास करता है, इसलिए यह फ़ाइल को हटाने के लिए 228GB लिखेगा। यह अब तक कई बार फ़ाइल को पहले ही अधिलेखित कर चुका होगा। आप इसे बस नियंत्रित कर सकते हैं और बाद में कम सुरक्षित पास कर सकते हैं - संचय में यह एक ही चीज़ की राशि हो सकती है।