लिनक्स में एक प्रक्रिया को कैसे मारें

How Kill Process Linux



हर लिनक्स ऑपरेटिंग सिस्टम किल कमांड के साथ आता है। इस उपकरण का एकमात्र उद्देश्य लक्ष्य प्रक्रिया को समाप्त करना है। यह एक शक्तिशाली उपकरण है जो लिनक्स को काफी बहुमुखी बनाता है, विशेष रूप से सर्वर और उद्यम क्षेत्रों में जहां एक बड़ा परिवर्तन / अद्यतन पूरी मशीन को पुनरारंभ किए बिना प्रभावी हो सकता है। इस लेख में, मैं दिखाऊंगा कि कैसे एक प्रक्रिया का उपयोग करके मारना है मार , पकिल तथा सबको मार दो .

एक प्रक्रिया को मारना

किसी प्रक्रिया को समाप्त करने के लिए, हम कुछ टूल का उपयोग करेंगे: मार , पकिल , तथा सबको मार दो . वे सभी मूल रूप से उसी तरह काम करते हैं।







ये उपकरण स्वयं प्रक्रिया को समाप्त नहीं करते हैं। इसके बजाय, वे लक्ष्य प्रक्रिया या प्रक्रिया समूहों को एक निर्दिष्ट संकेत भेजते हैं। यदि आपने कोई विशिष्ट संकेत निर्दिष्ट नहीं किया है, तो SIGTERM को डिफ़ॉल्ट संकेत के रूप में भेजा जाता है। हालाँकि, कई समर्थित संकेत हैं, उदाहरण के लिए, SIGKILL, SIGHUP आदि।



यहाँ के लिए मूल कमांड संरचना है मार , पकिल तथा सबको मार दो .



$मार <सिग्नल_या_विकल्प> <पीआईडी(एस)>
$ पीकिल<सिग्नल_या_विकल्प> <प्रक्रिया का नाम>
$सबको मार दो <विकल्प> <प्रक्रिया का नाम>

जब भी संभव हो, इसका उपयोग करने की अनुशंसा की जाती है मार .





को मार डालो , पकिल तथा सबको मार दो स्थानों

किल एक प्रक्रिया को समाप्त करने के लिए डिफ़ॉल्ट कमांड है।



$मार --मदद

यह /usr/bin निर्देशिका से चलता है।

$कौन मार

लाभ यह है कि यह pkill तक पहुंच की भी अनुमति देता है, किल के समान एक अन्य कमांड जो उनके नाम के आधार पर प्रक्रिया को समाप्त करने की अनुमति देता है।

$पकिल--मदद

$कौनपकिल

कुछ ऐप्स एक ही निष्पादन योग्य की कई प्रक्रियाएं चलाते हैं। यदि आप एक ही नाम से कई प्रक्रियाओं को समाप्त करना चाहते हैं, तो किलॉल टूल का उपयोग करें।

$सबको मार दो --मदद

$कौन सबको मार दो

सभी चल रही प्रक्रियाओं को सूचीबद्ध करना

सबसे पहला काम पीआईडी ​​(प्रक्रिया पहचान संख्या) और/या उस प्रक्रिया के नाम की पहचान करना है जिसे आप समाप्त करना चाहते हैं। इस उदाहरण के लिए, मैं समाप्त करने के लिए लक्ष्य प्रक्रिया के रूप में फ़ायरफ़ॉक्स का उपयोग करूँगा। सिस्टम पर चल रही सभी प्रक्रियाओं को सूचीबद्ध करने के लिए निम्न कमांड चलाएँ।

$पी.एस. -प्रति

अधिकांश कार्यों के लिए, हमें लक्ष्य प्रक्रिया के पीआईडी ​​​​को जानना होगा। हालाँकि, कुछ स्थितियों में, प्रक्रिया नाम का उपयोग करना अधिक उपयुक्त होता है।

यदि आप लक्ष्य प्रक्रिया का सटीक नाम जानते हैं, तो आप सीधे पीआईडी ​​​​का उपयोग करके प्राप्त कर सकते हैं पिडोफ .

$पिडोफ <प्रक्रिया का नाम>

लक्ष्य प्रक्रिया के बारे में जानकारी प्राप्त करने के लिए एक और दिलचस्प उपकरण pgrep है। यह विशेष रूप से उद्देश्य के लिए डिज़ाइन किया गया है।

$पीजीआरईपी<विकल्प> <प्रक्रिया का नाम>

किल सिग्नल

अब, उन संकेतों पर एक नजर डालते हैं जो कि किल टूल्स सपोर्ट करते हैं। यह एक बहुत बड़ी सूची है। बेशक, वे सभी हर एक स्थिति के लिए आवश्यक नहीं हैं। वास्तव में, अधिकांश स्थितियों में केवल कुछ ही संकेतों की आवश्यकता होती है।

सबसे पहले, उस सूची पर एक नज़र डालते हैं जो समर्थन को मारती है।

$मार -NS

आप कौन सा सिग्नल भेजना चाहते हैं, इसे परिभाषित करने के 2 तरीके हैं। आप या तो पूर्ण सिग्नल नाम या इसके समकक्ष मान का उपयोग कर सकते हैं।

$मार-<संकेत> <पीआईडी>

या,

$मार-<सिग्नल_वैल्यू> <पीआईडी>

सबसे लोकप्रिय सिग्नल SIGHUP (1), SIGKILL (9) और SIGTERM (15) हैं। आम तौर पर, लक्ष्य प्रक्रिया को समाप्त करने के लिए SIGTERM डिफ़ॉल्ट और सबसे सुरक्षित तरीका है।

पकिल के मामले में, समर्थित सिग्नल किल के समान है। हालांकि, किलॉल के मामले में, समर्थित संकेतों की संख्या और सिग्नल के नाम भिन्न हैं।

$सबको मार दो -NS

एक प्रक्रिया को मारना

किसी प्रक्रिया को समाप्त करने के लिए, हमें उस लक्ष्य प्रक्रिया के PID की आवश्यकता होती है। यह मानते हुए कि आपके पास PID है, इसे मारने के लिए निम्न कमांड चलाएँ।

$मार <विकल्प> <पीआईडी>

यहां, किल डिफ़ॉल्ट सिग्नल SIGTERM को PID(s) को भेजेगा। यदि आप कई प्रक्रियाओं को समाप्त करना चाहते हैं, तो अंतरिक्ष द्वारा अलग किए गए सभी पीआईडी ​​​​का उल्लेख करें।

$मार <विकल्प> <पीआईडी_1> <पीआईडी_2>

आइए निर्दिष्ट करें कि आप लक्ष्य को कौन सा संकेत भेजना चाहते हैं।

किसी प्रक्रिया को केवल उसके नाम का उपयोग करके समाप्त करना चाहते हैं? पीकिल का प्रयोग करें।

$पकिल<विकल्प> <प्रक्रिया का नाम>

कुछ मामलों में, किसी विशेष एप्लिकेशन में बहुत अधिक प्रक्रियाएं चल रही हो सकती हैं। उन सभी पीआईडी ​​को टाइप करना समय लेने वाली और थकाऊ है। ऐसे परिदृश्यों में, हम किलऑल टूल का उपयोग करेंगे। यह काफी हद तक मारने के समान है लेकिन यह प्रक्रिया के नाम के साथ काम करता है।

$सबको मार दो <विकल्प> <प्रक्रिया का नाम>

उदाहरण के लिए, फ़ायरफ़ॉक्स चलाते समय, यह मुट्ठी भर प्रक्रियाएँ शुरू करता है। उन सभी को एक साथ मारने के लिए इस कमांड को रन करें।

$सबको मार दोफ़ायर्फ़ॉक्स

एक निश्चित उपयोगकर्ता के तहत चल रही सभी प्रक्रियाओं को समाप्त करना चाहते हैं? किलॉल काम कर सकता है, कोई बात नहीं। इसे चलाते समय सावधान रहें क्योंकि यह सिस्टम को तोड़ सकता है और अन्य समस्याएं पैदा कर सकता है। यदि आप उच्च विशेषाधिकार वाले किसी भिन्न उपयोगकर्ता के अंतर्गत चल रही प्रक्रियाओं को समाप्त करने का प्रयास कर रहे हैं तो यह काम नहीं करेगा।

$सबको मार दो यू <उपयोगकर्ता>

अनुमति विवाद

जब आप किसी एप्लिकेशन को समाप्त करने वाले होते हैं तो Linux उपयोगकर्ता पदानुक्रम की अंतर्निहित विशेषताएं भी लागू होती हैं। एक उपयोगकर्ता उच्च विशेषाधिकार के साथ चल रही प्रक्रियाओं को समाप्त नहीं कर सकता, केवल समान/निम्न विशेषाधिकार वाली प्रक्रियाएं। इसके अलावा, एक उपयोगकर्ता अलग-अलग उपयोगकर्ता के तहत चल रही प्रक्रियाओं में हेरफेर नहीं कर सकता है।

उदाहरण के लिए, आइए हाँ कमांड पर विचार करें। यदि इसे वर्तमान उपयोगकर्ता कहा जाता है, तो इसे किल का उपयोग करके आसानी से समाप्त किया जा सकता है।

$मार हां

अब, क्या हुआ अगर हां नीचे चल रहा था जड़ ? कॉलिंग किल वर्तमान उपयोगकर्ता के रूप में काम नहीं करेगा।

इसी तरह, यदि कोई प्रक्रिया किसी अन्य उपयोगकर्ता के अधीन चल रही थी, तो आप इसे किसी भिन्न उपयोगकर्ता खाते से समाप्त नहीं कर सकते।

अंतिम विचार

इस लेख में, इन आदेशों की केवल मूल बातें और सामान्य उपयोग प्रदर्शित किए गए थे। ये किल टूल्स उससे कहीं ज्यादा सक्षम हैं। किसी भी उपकरण की क्षमताओं का गहन ज्ञान रखने के लिए, मैं मैन पेज की जाँच करने की सलाह देता हूँ।

$पुरुष मार

$पुरुषपकिल

आनंद लेना!