एक प्रक्रिया की आईडी ढूँढना और उसे मारना


16

जब भी मुझे एक पृष्ठभूमि प्रक्रिया को मारने की आवश्यकता होती है, तो मैं करता हूं ps -e | grep <process_name>

कौन सा कुछ इस तरह प्रिंट 1766 ? 00:00:13 conky, तब मैं प्रक्रिया आईडी का उपयोग करना killयह इतना चाहते kill 1766

क्या ऐसा कोई तरीका है जिससे मैं इसे सरल बना सकूं? इसे जल्दी करो? टाइपिंग की मात्रा कम करें?


1
मुझे वह उत्तर मिल गया है जो मैं चाहता हूं, लेकिन मैं स्वीकार करने से पहले थोड़ी प्रतीक्षा करूंगा ताकि समुदाय उपलब्ध विभिन्न विकल्पों से लाभ उठा सके।
गौतम

कृपया बेझिझक इस प्रश्न को और अधिक सामान्य बनायें यदि संभव हो तो अधिक से अधिक लोग उत्तर से लाभान्वित हो सकते हैं
गौतम

जवाबों:


19

(एल, डी आर: pgrep, pkill)

कई यूनिक्स संस्करण pgrepऔर उसके साथी के साथ आते हैं pkill: सोलारिस , लिनक्स ( मानक प्रक्रिया उपयोगिताओं का हिस्सा , एम्बेडेड लिनक्स सिस्टम से अनुपस्थित हो सकता है), FreeBSD , OpenBSD , NetBSD , ... लेकिन केवल OS X में MacPorts से , AIX नहीं , और केवल हाल ही में HP-UX मेंpgrepउपयोगिता नाम, उपयोगकर्ता और कुछ अन्य मापदंड के अनुरूप प्रक्रियाओं की प्रक्रिया आईडी को दर्शाता है। तर्क को pgrepएक rexxp के रूप में व्याख्या किया जाता है जो प्रक्रिया के निष्पादन योग्य नाम के हिस्से से मेल खाना चाहिए (जब तक कि आप इसे बदलने के लिए एक विकल्प पास न करें)। अगर आप के pkillबजाय कॉलpgrepउपयोगिता प्रक्रिया आईडी प्रदर्शित करने के बजाय एक संकेत भेजती है।

एक और समान उपयोगिता पिडोफ है । पर लिनक्स , यह द्वारा प्रदान की गई SysVinit या बिजीबॉक्स (ताकि आप अक्सर एक एम्बेडेड लिनक्स व्यवस्था नहीं है कि पर यह मिल जाएगा pgrep); अन्य यूनिक्स वेरिएंट पर भी पोर्ट हैं। pidofउपयोगिता कम विकल्प है, यह ज्यादातर केवल पूरे निष्पादन योग्य फ़ाइल नाम से मेल खाता है। इसकी साथी उपयोगिता killallमिलान किए गए कार्यक्रमों के लिए एक संकेत भेजती है।

And खबरदार killallजिसका सोलारिस और संभवतः अन्य यूनिक्स वेरिएंट पर एक अलग अर्थ है; killallसोलारिस पर रूट के रूप में टाइप न करें ।


वाह आपका जवाब बहुत विस्तृत है, बहुत अधिक गहराई में, धन्यवाद। यदि संभव हो तो उत्तर का मिलान करने के लिए प्रश्न को संपादित करें।
गौतम

@ गौतम मुझे नहीं लगता कि सवाल के विस्तार की जरूरत है। यदि आप ऐसा करते हैं, तो बेझिझक इसे संपादित करें।
गिल्स एसओ- बुराई को रोकें

सबसे अधिक वोटों के जवाब के साथ, आपका जवाब अधिक विवरण देता है, इसलिए मैं इसे स्वीकार कर रहा हूं
गौतम

8
  • killall ProcessName (इस आदेश के साथ एक नुकसान यह है कि आप हमेशा एक कार्यक्रम की प्रक्रिया का नाम नहीं जानते हैं)।
  • pidof ProccessName तथा kill the result form pidof
  • ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9 इस एक लाइन को आज़माएँ और इसे अपने बैश के इतिहास का निर्माण करें, या बेहतर तरीके से इसके लिए एक उपनाम बनाएँ।

दूसरा pidofथोड़ा और अधिक आसान लगता है, लेकिन फिर भी यह 2 चरणों में ले जाता है
गौतम

मैं एक लाइन कमांड को खोज / बना सकता हूं जो कि एक कदम में (एक कठिन प्रक्रिया नाम के साथ) लेकिन आपको एक लंबी लाइन टाइप करने की आवश्यकता होगी (जो कि दो कदम ऊपर है), या आप इसे एक बार टाइप कर सकते हैं और इसका पुन: उपयोग इतिहास बनाते हैं।
हनान एन।

@ गौतम आई ने सिंगल कमांड विकल्प के साथ उत्तर को अपडेट किया है।
हनान एन।

6

जबकि हनन के पास कुछ अच्छे सुझाव हैं, मैं जोड़ूंगा pgrep/ pkill। वे बहुत महीन नियंत्रण की अनुमति देते हैं कि आप किस प्रक्रिया को पाते हैं, और नियमित अभिव्यक्ति यदि आपको सटीक प्रक्रिया नहीं पता है जिसे आपको मारने की आवश्यकता होगी।

PS हैनान pidofको killसीधे बैकटिक के साथ खिलाया जा सकता है :

kill `pidof processname`

pkillवास्तव में क्या मैं, के लिए मैं समय के सबसे प्रक्रिया नाम पता अधिकतर इसकी देख रहा था, था conkyया firefoxया chromeया ऐसा ही कुछ। साभार
गौतम

1

इस बारे में कैसा है -

ps -e | awk '$4~/<process name>/{print $1}' | xargs kill

उदाहरण:

[jaypal:~/Temp] sleep 100&
[1] 74863
[jaypal:~/Temp] ps -e | awk '$4~/sleep/{print $1}' | xargs kill
[1]+  Terminated: 15          sleep 100

अपडेट करें:

क्षमा करें, यह स्पष्ट रूप से कम लिख कर की आवश्यकता को पूरा नहीं करता है तो यह ऐसा करने का एक अच्छा तरीका है एक जोड़ने के लिए किया जाएगा functionआपके लिए .bashrc, .profileया जो कुछ भी स्टार्टअप स्क्रिप्ट। समारोह कुछ इस तरह हो सकता है -

killp() {
awk -v pname="$1" '($4==pname){print $1}' <(ps -e) | xargs kill
}

एक बार जोड़ने के बाद, आप बस अपनी प्रक्रिया का नाम दे सकते हैं:

[jaypal:~] sleep 100&
[1] 77212
[jaypal:~] killp sleep
[1]+  Terminated: 15          sleep 100
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.