'किलर' और 'पकिल' में क्या अंतर है?


92

kill <some_pid>कई सालों तक यूनिक्स सिस्टम पर सिर्फ सादे का उपयोग करने के बाद , मैंने pkillएक युवा लिनक्स-प्रेमी सहकर्मी सहकर्मी 1 से सीखा ।

मैंने जल्द ही लिनक्स-वे, pgrep-इंग और pkill-इंग को कई दिनों और रातों के माध्यम से धीमा-डाउन और दौड़ की स्थितियों के माध्यम से स्वीकार किया । यह सब अच्छा और अच्छा था।

लेकिन अब मुझे कुछ नहीं दिखता killall। कैसे-कैसे प्रतीत होते हैं केवल उल्लेख करते हैं killall, और मुझे यकीन नहीं है कि यह किसी प्रकार का समानांतर विकास है, या यदि killallउत्तराधिकारी है pkillया कुछ और।

यह अधिक लक्षित के रूप में कार्य करता है pkill, लेकिन मुझे यकीन है कि मैं कुछ याद कर रहा हूं।

क्या उबंटू / डेबियन-प्रेमी 2 व्यक्ति यह समझा सकते हैं कि कब (या क्यों) killallका उपयोग किया जाना चाहिए, खासकर यदि इसका उपयोग वरीयता में किया जाना चाहिए pkill(जब pkillअक्सर आसान लगता है, क्योंकि मैं नाम मिलान के साथ ढलान वाला हो सकता हूं, कम से कम डिफ़ॉल्ट रूप से)।

जब बोलते हैं killall, तो मैं कमांड के बारे में नहीं सोच रहा हूं कि कुछ यूनिक्स सिस्टम (सोलारिस, एआईएक्स?) सभी उपयोगकर्ता प्रक्रियाओं को मार देंगे। यहाँ उस संस्करण का वर्णन है, जो IBM के AIX के लिए एक मेनपेज से है :

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

1 'सहकर्मी' 'सहकर्मी' से मुफ्त अपग्रेड है, इसलिए भी हो सकता है।
2 मूल रूप से मैंने सोचा था कि यह एक लिनक्स या डेबियन चीज थी, लेकिन कुछ स्रोत कह रहे हैं कि लिनक्स killallबीएसडी-स्वाद वाले यूनिक्स से बना है।

जवाबों:


68

मुझे लगता है कि आप हत्या को कैसे-कैसे करते हैं क्योंकि डिफ़ॉल्ट रूप से इसे सटीक प्रक्रिया नाम की आवश्यकता होती है, जबकि pkill बुनियादी पैटर्न से मेल खाता है। इस प्रकार, उपयोगकर्ताओं को नेत्रहीन कॉपी और पेस्ट करने के लिए किलॉल सुरक्षित है।

Pkill और किलॉल दोनों के अलग-अलग विकल्प हैं। किल्लल में प्रक्रिया की उम्र के हिसाब से एक झंडा होता है, pkill में एक दिए गए ट्टी पर केवल प्रक्रियाओं को मारने के लिए एक झंडा होता है। एटसेटरा विज्ञापन nauseum। न तो बेहतर है , वे सिर्फ अलग विशेषताओं हैं।

मैं उनके मैन पेजों से देखता हूं कि किस्मॉल , psmisc पैकेज से आता है , जिसमें उपयोगिताओं के प्रबंधन की कई प्रक्रिया है, लेकिन विशेष रूप से इसमें शामिल नहीं है ps। यह procps पैकेज है जिसमें ps, top, किल, और pkill (दूसरों के बीच) है। मैं दांव लगाना चाहता हूँ मूल रूप से pkill नहीं था, इसलिए psmisc एक खुजली खरोंच और हत्यारे के साथ आया था।

Pkill / pgrep आदमी पेज का कहना है कि वे सोलारिस 7 में शुरू किए गए थे तुम उल्लेख के रूप में, jgbelacqua , सोलारिस के killall नहीं उपयोगिता psmisc, प्रदान करता है इस प्रकार सोलारिस शायद ही procps पैकेज था। कोई एक पैटर्न मिलान प्रक्रिया उपकरण चाहता था, इस प्रकार pkill और pgrep। चाहे इसे डीईपीएस द्वारा विकसित किया गया हो या बाद में जोड़ा गया हो, मुझे नहीं पता। बावजूद, इसने इसे बनाया और हर जगह * निक्स का हिस्सा बन गया।

अधिक स्रोत:


1
हम्म - एक killall(पुरानी?) सोलारिस सिस्टम था, लेकिन यह अलग तरह से व्यवहार करता था। इसने सब कुछ मार दिया।
बेलाक्वा

6
@ मनीष - एर, SysV सिस्टम पर एक अलग हत्या थी।
बेलाक्वा

1
@djeikyb किल्लार के बारे में सोचा गया कि यह सुरक्षित है, या कम से कम यह बहुत अधिक लोकप्रियता का कारण बन सकता है।
बेलाक्वा

5
@ मिनिश: pkill (नो किल) को पीआईडी ​​नंबर की जरूरत नहीं है, न ही प्रक्रिया के नाम की। यह प्रक्रिया के नाम पर पेटर मैच करता है।
जेवियर रिवेरा

3
killall is safer for users to blindly copy and paste, सिवाय अगर आप एक मशीन पर हैं जहाँ किलॉल वास्तव में सभी को मारता है। यह दुर्भाग्यपूर्ण है कि दो अलग-अलग उपयोगिताओं का एक ही नाम है।
रयान

7

कृपया "हत्यारे" से सावधान रहें। कुछ प्रणालियों पर (मैं भूल जाता हूं), किलॉल सभी प्रक्रियाओं को मारता है। यह चुपचाप तर्कों को अनदेखा करेगा और आपके सिस्टम को पूरी तरह से रोक देगा।


5
यह सच नहीं है। बिना किसी तर्क के हत्या कुछ भी नहीं करेगी, और हत्यारे तर्क की उपेक्षा नहीं करेंगे। kill -9 -1आपके सिस्टम को मार सकता है, और भी killall -9 -1हो सकता है। लेकिन न सिर्फkillall [program]
थॉमस वार्ड

6
यह SysV सिस्टम पर सच है, जैसा कि अब मूल प्रश्न में बताया गया है।
2

3

यदि आप / etc / bash_completion को सक्रिय करते हैं, killall <part_of_process_name>और हिट टैब के बाद - ऑटो चल रही प्रक्रियाओं की सूची से प्रक्रिया का नाम पूरा करता है


2
एक ही ऑटो-पूरा pgrep / pkill के साथ किया जाएगा। जब मैं आमतौर पर pkill plug<tab>फ़ायरफ़ॉक्स के लिए फ्लैश प्लगइन को मारता हूं, तो मुझे पता है कि मेरे पास कुछ भी नहीं है जो मैं थोड़ी देर के लिए उपयोग करना चाहता हूं, लेकिन फिर भी सक्रिय रूप से फ़ायरफ़ॉक्स का उपयोग करना चाहता हूं। यह कवच का एक कार्य है, किल्ली और pgrep / pkill के बीच अंतर नहीं है।
12

1
मैंने यह नहीं कहा कि एक अंतर है - पीआईडी, प्रक्रिया के नाम और आदि की खोज से बचने के लिए सिर्फ एक अच्छी सुविधा
जेट

2

यदि आप दोनों कार्यक्रमों के विकल्पों को देखते हैं, तो आप देखेंगे कि वे दोनों एक ही काम करते हैं, लेकिन अलग-अलग तरीकों से।

pkill एक प्रक्रिया की विभिन्न विशेषताओं (सीएमडी, पीआईडी, पीपीआईडी, यूआईडी ...) पर मिलान करेगा और प्रत्येक प्रक्रिया को दिए गए संकेत को मेल करेगा। (सीएमडी के लिए, एक नियमित अभिव्यक्ति का उपयोग किया जाता है, दूसरों के लिए यह एक स्ट्रिंग है)। pkill इंटरएक्टिव नहीं है, लेकिन बैच कार्यक्रमों के लिए बेहतर है।

किलॉल प्रक्रिया नाम (कॉम) या उपयोगकर्ता (उपयोगकर्ता) पर मिलान करेगा, न कि पूरे कमांड स्ट्रिंग पर। तर्क को एक साधारण स्ट्रिंग के रूप में उपयोग किया जाता है और इसे पूरे 'कम' मूल्य से मेल खाना चाहिए (इसमें बदलने के लिए एक --regexp विकल्प भी है)। किलॉल में - इनएक्टिव और -यूनियर-से अधिक विकल्प होते हैं, जो कि pkill के पास नहीं है।

एक किला 5 भी SysV दिनों से है और अन्य UNIX वेरिएंट (माना जाता है कि उबंटू पैकेज 'sysutils' के तहत) में पोर्ट किया गया था। यह पुराने फैशन के तरीके से अलग व्यवहार करता है। इसका उपयोग अक्सर आंतरिक स्क्रिप्ट में एकल-उपयोगकर्ता मोड को बंद करने या बदलने के लिए init स्क्रिप्ट में किया जाता था।


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