मैं इसके नाम से एक प्रक्रिया को कैसे मार सकता हूं?


44

कभी-कभी मुझे लगता है कि इस प्रक्रिया को Pythonलटका दिया। फिर मैं इसे एक्टिविटी मॉनिटर के जरिए मारूंगा और सबकुछ ठीक हो जाएगा।

मैं इसके बजाय टर्मिनल में उस प्रक्रिया को मारना चाहता हूं। हालाँकि, इस PIDतरह का दिखना आवश्यक नहीं है क्योंकि नाम से केवल एक प्रक्रिया है Python

क्या किसी प्रक्रिया को उसके अनूठे नाम से मारना संभव है?

जवाबों:


52

आपको कमांड चलाने में सक्षम होना चाहिए sudo killall Python

आपको रूट के रूप में चलाने की आवश्यकता है क्योंकि पायथन रूट का है, उपयोगकर्ता का नहीं।


मैंने ऐसा किया:No matching processes belonging to you were found
gentmatt

1
अजगर प्रक्रिया आपके उपयोगकर्ता से संबंधित नहीं है। इसके बजाय मूल के रूप में प्रयास करें sudo killall Python:।
हेनिंगज

1
@ हेनिंग जे सुडो ने किसी कारण से काम किया। मैंने सिर्फ यह देखा कि यह प्रक्रिया मेरी है। sudoजब मैं इसका उपयोग करके इसे मार सकता था, तो मैं इस प्रक्रिया को मार सकता था PID। क्यूं कर?

1
मैं सोच रहा हूँ क्योंकि पीआईडी ​​का उपयोग करना उपयोगकर्ता / रूट विशिष्ट नहीं है, जबकि एक प्रक्रिया का नाम है। मैं इस उत्तर को प्रतिबिंबित करने के लिए संपादित करूंगा sudo
मैट लव

यह भी कई नामी प्रक्रियाओं के लिए काम किया, अच्छा
क्रिस्मार्क्स

21
sudo killall -s SIGINT "process name"

यदि आप एक sudo नहीं हो सकते क्योंकि यह पासवर्ड के लिए पूछेगा और मुझे लगता है कि आप स्क्रिप्ट में ऐसा नहीं चाहते हैं। pkill बचाव के लिए आते हैं :)

pkill -9 "process name"

5

आप GUI समाधान होने के नाते, एक्टिविटी मॉनिटर.एप्प का उपयोग करके एप्लिकेशन को मार सकते हैं। यह एक सरल "बल छोड़ना" होगा। हालाँकि, यह हमेशा कुछ स्थितियों में विभिन्न कारणों से काम नहीं करता है!

कमांड-लाइन समाधान जैसा कि ऊपर टिप्पणी में बताया गया है, उपयोगकर्ता के लिए बहुत अधिक विकल्प रखता है। sudo killall Pythonया यदि यह एक चल रही प्रोग्राम-प्रक्रिया है sudo killall /Applications/Whatever.app, तो प्रक्रिया को छोड़ने के लिए बाध्य करती है।

आप इसके असाइन किए गए PID का उपयोग करके किसी प्रक्रिया को छोड़ने के लिए बाध्य कर सकते हैं । गतिविधि मॉनिटर के मामले में। यह kill 25794या होगाkill -9 25794

यहाँ छवि विवरण दर्ज करें

कुछ और विवरण:

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

जब तक आप भी sudo का उपयोग नहीं करते हैं, तब तक आप केवल उन प्रोग्रामों को मार सकते हैं जिन्हें आप "अपने" अपने खाते में चला रहे हैं। (स्वयं ऑपरेटिंग सिस्टम - रूट - हमेशा अपने स्वयं के प्रोग्राम चला रहा है, और यह तकनीकी रूप से संभव है कि सड़क से डायल करते हुए अन्य लोग, मैक का उपयोग करते हुए भी अपने स्वयं के प्रोग्राम चला रहे हों!)

यह -9झंडा एक "नॉन-कैटैसेबल, नॉन-इग्नोरबल किल" है, दूसरे शब्दों में, यह एक औद्योगिक-ताकत वाला हत्यारा है, जो आपके द्वारा मारे जा रहे प्रोग्राम से दया के लिए कोई दलील स्वीकार नहीं करता है।


5

यद्यपि यह PID का उपयोग करता है , मुझे लगता है कि निम्नलिखित बहुत कुशल है:

ps aux | grep "String or name of process"

यह पंक्ति मिलान प्रक्रिया (तों) के बारे में जानकारी का एक मेजबान लौटाती है, और आप killवहां से या जो भी कर सकते हैं ।


2
pkill -f "process name"

Https://stackoverflow.com/a/22334807/1243763 पर आधारित


1
क्या macOS पर एक पिडोफ़ है? और pkill का उपयोग क्यों न करें, जिसमें अतिरिक्त प्रक्रिया की समस्या नहीं है?
nohillside

सहमत हूँ और मुझे याद किया। मेरे पास pidofगैर-मानक उपनाम के रूप में द्विआधारी था ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '। तो, pkill -fअधिक समझ में आता है।
समीर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.