Pkill और Killall में क्या अंतर है?


49

मुझे पता है कि pkillकी तुलना में अधिक फ़िल्टरिंग नियम हैं killall। मेरा सवाल है, क्या अंतर है:

pkill [signal] name

तथा

killall [signal] name

मैंने पढ़ा है कि killallअधिक प्रभावी है और सभी प्रक्रियाओं और उपप्रकारों (और पुनरावर्ती) को मार डालो जो nameकार्यक्रम के साथ मेल खाते हैं । pkillयह भी नहीं करता है?


जवाबों:


46

pgrepऔर pkillउपयोगिताओं सूर्य की सोलारिस 7 में पेश किए गए और, के रूप में g33klord उल्लेख किया है, वे तर्क जो चल रही प्रक्रियाओं की नामों के खिलाफ मिलान किया जाता है के रूप में एक पैटर्न ले लो। जबकि pgrepकेवल मिलान प्रक्रियाओं की एक सूची प्रिंट करता है, प्रक्रियाओं pkillको निर्दिष्ट संकेत (या SIGTERMडिफ़ॉल्ट रूप से) भेजेगा । के बीच के सामान्य विकल्प और शब्दार्थ काम में आते हैं pgrepऔर pkillजब आप सावधान रहना चाहते हैं और पहले सूची मिलान प्रक्रियाओं की समीक्षा करते हैं pgrep, तो आप को मारने के लिए आगे बढ़ते हैं pkillpgrepऔर pkillद्वारा प्रदान की जाती हैं procps पैकेज है, जो भी अन्य प्रदान करता है /procजैसे फाइल सिस्टम उपयोगिताओं, ps, top, free, uptimeदूसरों के बीच में।

killallआदेश द्वारा प्रदान की गई psmisc पैकेज, और से अलग है pkillकि में, डिफ़ॉल्ट रूप से, यह तर्क ठीक वही नाम (पहले 15 वर्ण) से मेल खाता है जब प्रक्रियाओं संकेतों को भेजा जाएगा का निर्धारण। -e, --exactविकल्प भी 15 वर्णों से अधिक नामों के लिए सटीक मिलान की आवश्यकता के लिए निर्दिष्ट किया जा सकता। यह killallतुलना में उपयोग करने के लिए कुछ हद तक सुरक्षित बनाता है pkill। यदि निर्दिष्ट तर्क में स्लैश ( /) वर्ण हैं, तो तर्क की व्याख्या एक फ़ाइल नाम के रूप में की जाती है और उस विशेष फ़ाइल को चलाने वाली प्रक्रियाओं को प्राप्तकर्ता के रूप में चुना जाएगा। killallभी, इस प्रक्रिया नामों की नियमित अभिव्यक्ति मिलान का समर्थन करता है के माध्यम से -r, --regexpविकल्प।

अन्य अंतर भी हैं। killallउदाहरण के लिए आदेश उम्र से प्रक्रियाओं मिलान के लिए विकल्प हैं ( -o, --older-thanऔर -y, --younger-thanजबकि), pkillकेवल (के माध्यम से एक विशेष टर्मिनल पर प्रक्रियाओं को बंद करने के लिए कहा जा सकता है -tविकल्प)। स्पष्ट रूप से, दोनों आदेशों में विशिष्ट niches हैं।

ध्यान दें कि यूनिक्स सिस्टम V (विशेष रूप से सूर्य के सोलारिस , IBM के AIX और HP के HP-UX ) killallसे आने वाले सिस्टम पर कमांड किसी विशेष उपयोगकर्ता द्वारा हत्या योग्य सभी प्रक्रियाओं को मारता है , प्रभावी रूप से सिस्टम को रूट द्वारा बंद करने पर बंद कर देता है।

लिनक्स psmisc उपयोगिताओं को बीएसडी (और विस्तार मैक ओएस एक्स में ) में पोर्ट किया गया है , इसलिए killall"नाम द्वारा" मार प्रक्रियाओं का अर्थ है।


मुख्य अंतर जो मैंने देखा है, एक उपयोगकर्ता द्वारा एक पैटर्न के आदेशों को रोकना है killall -u <username> -r <process>या pkill <process> -U <uid>जो killallमुझे उपयोग करने के लिए बहुत आसान बनाता है।
१२:१४ पर १

13

pkillवह है जो भविष्य की पीढ़ियों को पढ़ाने के लायक है, क्योंकि आपके द्वारा उल्लिखित फिल्टर और तथ्य यह है कि इसे अत्यधिक पुन: प्रयोज्य के साथ जोड़ा जाता है pgrep। वे उसी तरह प्रक्रियाओं को मारते हैं, और न तो पुनरावृत्ति को मारते हैं - हालांकि pgrep, आप सत्र (प्रति-सेट, थिंक सेटिड) या प्रक्रिया समूह (सोचें नियंत्रण) द्वारा चयन कर सकते हैं।


8

एक अंतर यह है कि killallप्रक्रिया का सटीक नाम तर्क के रूप में लें, जबकि pkillआंशिक या पूर्ण नाम ले सकते हैं।

Pkill के बारे में गहराई से जानने के लिए आप इस प्रश्न को संदर्भित कर सकते हैं


1

killall- नाम से प्रक्रियाओं को मार डालो। killallचयन मानदंड से मेल खाने वाली एक या अधिक प्रक्रियाओं, जैसे कि कमांड का नाम, एक विशिष्ट उपयोगकर्ता के स्वामित्व वाली प्रक्रिया या सभी सिस्टम-वाइड प्रक्रियाओं के लिए सिग्नल भेजने के लिए कमांड का उपयोग करें ।

pkill- स्टैडआउट पर सूचीबद्ध करने के बजाय प्रत्येक प्रक्रिया को निर्दिष्ट संकेत (डिफ़ॉल्ट SIGTERM द्वारा) भेजेगा। pkillजैसे कई प्रक्रियाओं का संकेत दे सकते हैं killall, लेकिन उन्नत चयन मानदंड का भी उपयोग कर सकते हैं जिसमें कोई भी संयोजन शामिल हो सकता है:

कमान UID पैरेंट टर्मिनल

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