Linux में किसी प्रक्रिया को मारने के लिए कई तरीकों का उपयोग किया जा सकता है। यह ट्यूटोरियल आपको सिखाएगा कि टूटी हुई प्रक्रियाओं को कैसे ढूंढें और मारें।
एक प्रक्रिया आसानी से अनाथ हो सकती है। चाहे उद्देश्य से या नहीं, एक पैरेंट प्रक्रिया क्रैश हो सकती है और एक चाइल्ड प्रक्रिया को चलता हुआ छोड़ सकती है। कभी-कभी, एक पैरेंट प्रक्रिया एक पूर्ण चाइल्ड प्रक्रिया को प्राप्त करने में विफल होती है, और यह एक ज़ोंबी बन जाती है।
ये दोनों प्रक्रियाएं अटकी हुई हैं और मैन्युअल हस्तक्षेप की आवश्यकता है। जॉब कंट्रोल में प्रवेश करें। आइए देखें कि टूटी हुई प्रक्रियाओं को कैसे मारें।
आइए कुछ कमांड देखें:
- top (और क्यों htop शायद बेहतर है)
- ps
- kill
Top (खोजें और नष्ट करें)
इससे पहले कि आप सभी प्रक्रियाओं को किल मैसेज भेजना शुरू करें, आपको यह जानना होगा कि आपके पास क्या है। हम यह नहीं मानते कि हमारे पास टूटी हुई प्रक्रियाएं चल रही हैं, और ठीक से जानते हैं कि क्या देखना है। यही top के लिए है। आइए vim चलाएं और इसे बैकग्राउंड में डालें।

vim
ठीक है, अब हमारे पास एक प्रक्रिया है जिसके साथ हम सामान्य रूप से इंटरैक्ट नहीं कर सकते। आइए top चलाएं। सामान्य आउटपुट उपयोगी नहीं है, इसलिए हम एक फ़िल्टर चलाएंगे।
- Shift+L दबाएं
- vim टाइप करें
- एंटर दबाएं

top
वहां हमारा आउटपुट है। आप पहली लाइन पर ध्यान देंगे, यह हमें अपटाइम, उपयोगकर्ताओं की संख्या, और हमारे लोड औसत बताता है। आप कॉलम में महत्वपूर्ण जानकारी भी देखेंगे। सामान्य दिन-प्रतिदिन मैं S, %CPU, और TIME+ देख रहा हूं। यदि कोई प्रक्रिया Z (ज़ोंबी) स्थिति में है तो मुझे पता है कि इसे मारना है। यदि कोई प्रक्रिया 100% CPU से अधिक है, तो यह ओवररन है और इसे मारने की भी आवश्यकता हो सकती है। या यदि कोई प्रक्रिया कुछ दिनों से चल रही है, तो शायद इसे रीस्टार्ट करने का समय है। हालांकि यह संभवतः पागलपन है, और अधिकांश मामलों में आवश्यक नहीं है।
आज हम दूसरी लाइन देख रहे हैं, ज़ोंबी और अनाथों की तलाश में। हमारे उदाहरण के लिए हमारे पास कोई ज़ोंबी प्रक्रिया नहीं चल रही है, इसलिए हम “2 stopped” प्रक्रियाओं के लिए फ़िल्टर करेंगे।
- o दबाएं
- टाइप करें: S=T

Filtering top
अब जब हम केवल S=T (state=stopped) फ़िल्टर में प्रक्रियाओं तक फ़िल्टर हो गए हैं, तो हम उन्हें मार सकते हैं। top में रहते हुए, आप k दबा सकते हैं, प्रोसेस PID दर्ज करें, और एंटर दबाएं। यदि आप इसके माध्यम से चला रहे हैं, तो आप देखेंगे कि इसे समाप्त होने में थोड़ा समय लग सकता है। इसके बजाय, k फिर से दबाएं, PID, दर्ज करें, और सिग्नल को 9 पर बदलें।
यह सही नहीं है, लेकिन यदि आपके पास स्टेटस विंडो के रूप में एक top विंडो चल रही है, तो आप पहले से ही वहां हैं। आप स्टॉप सिग्नल के बजाय किल सिग्नल भी भेज सकते हैं।
htop
ठीक है, मैं मानूंगा। यह top से बहुत अलग नहीं है। रंग को छोड़कर।

htop
इतना रंग।
PS
PS, प्रोसेस स्टेटस। हमारे सिस्टम पर प्रोसेस जानकारी देखने के लिए हमारा प्यारा नेटिव यूटिलिटी। यह टूल /proc में फ़ाइलों से पढ़ता है। अधिकांश दिन, आप उपयोग करने जा रहे हैं:

PS
- -a, सभी उपयोगकर्ताओं के लिए प्रक्रियाएं दिखाएं
- -u, प्रोसेस स्वामी प्रदर्शित करें
- -x, टर्मिनल से जुड़ी नहीं प्रक्रियाएं दिखाएं
ps -aux अकेले चलाने से आपको सब कुछ मिलेगा, लेकिन यह शायद ही कभी उपयोगी है। आइए grep में पाइप करें, और अपना खोया हुआ vim ढूंढें।

ps-aux command
और वहां यह है! आप वहां अपना वर्तमान grep कमांड भी देखेंगे। यदि आप वह नहीं चाहते हैं, तो अपने grep को थोड़ा बदलें।

ps-aux command with grep
वहां। अब vim देखें, लेकिन हमें grep प्रोसेस न दिखाएं जो vim ढूंढ रहा है। अब आइए प्रोसेस को kill करें। हम killall से शुरू करेंगे, और फिर kill आज़माएंगे।
प्रोसेस को मारना (Killall और Kill)
ठीक है, हमारे पास वह है जो हमें चाहिए। एक प्रोसेस नाम (vim) और प्रोसेस आईडी (140464)। killall नामों का उपयोग करता है, और kill प्रोसेस आईडी का उपयोग करता है। प्रत्येक समान सिग्नल सेट भेजता है: HUP, INT, KILL, TERM, और STOP सबसे आम हैं। यदि आप अधिक सीखना चाहते हैं, तो kill -l के साथ सूची देखें।

kill -l command
आइए सामान्य सिग्नल्स में गहराई से जाएं:
- HUP, सिग्नल मान 1. हैंगअप। एक पुराना शब्द जो फोन और मॉडेम लाइन्स से बचा हुआ है। अधिकांश सिस्टम में हैंगअप एक डिमन को समाप्त करने के बजाय रीस्टार्ट करेगा।
- INT, सिग्नल मान 2. इंटरप्ट। आमतौर पर, किसी प्रक्रिया के साथ इंटरैक्ट करते समय आप इसे इंटरप्ट करने के लिए CTRL+C भेज सकते हैं। kill -2 भेजने से वही इंटरप्ट सिग्नल चलता है।
- KILL, सिग्नल मान 9. किल। यह आमतौर पर हम जो ढूंढ रहे हैं। यह एक PID को तुरंत मारता है।
- TERM, सिग्नल मान 15. टर्मिनेट। यह एक प्रक्रिया के समाप्त होने का सामान्य व्यवहार है। यदि आप किसी प्रक्रिया के प्रति दयालु होना चाहते हैं, तो इसे समाप्त करने का यही तरीका है, ग्रेसफुली। डिफ़ॉल्ट रूप से, kill सिग्नल 15 भेजता है।
- STOP, सिग्नल मान 17, 19, 23. यह एक प्रक्रिया को रोकता है। मान लें कि आप एक बड़ी निर्देशिका कॉपी कर रहे हैं, और महसूस करते हैं कि आप कुछ फ़ोल्डर्स हटाना चाहते हैं। SIGSTOP भेजें, फ़ोल्डर्स हटाएं, और SIGCONT के साथ फिर से शुरू करें।
ठीक है, मैंने सिग्नल मान जोड़े। ये सिग्नल का संख्यात्मक मान हैं और इन्हें SIGHUP टाइप करने के बजाय आपके kill कमांड में उपयोग किया जा सकता है। उदाहरण के लिए:
- killall -9 vim
vim नाम की हर चीज़ को मारने का प्रयास करेगा। मैं सलाह देता हूं कि जब भी आप killall का उपयोग कर रहे हों, तो बाद में सत्यापित करें कि आपकी प्रक्रिया सफलतापूर्वक मारी गई है।

killall -9 vim
यदि कुछ बचा है, तो kill -9 के बाद प्रोसेस आईडी से मैन्युअली मारें। जैसे:
- kill -9 140464
निष्कर्ष
वहां है, एक प्रक्रिया को मारने का सरल स्पष्टीकरण। ओवररन प्रक्रियाओं के लिए top से शुरू करें। अटके हुए ग्राफिकल प्रक्रियाओं के लिए killall का उपयोग करें। kill के साथ किसी भी अवशेष को अलग करें। यह आपकी अधिकांश समस्याओं का ख्याल रखेगा।
संदेह में होने पर, रीबूट करें। रीबूट करने से पहले उचित अधिसूचना प्रक्रियाओं का पालन करें। अधिक शेल कमांड सीखें, और अपने Linux कौशल को निखारें।