मैं टर्मिनल में एक प्रोग्राम चला रहा हूं, जिसमें मैं बच नहीं सकता Ctrl- Cऔर जिसे मैं मारना चाहता हूं। मैं इसका पीआईडी कैसे खोज सकता हूं?
मैं टर्मिनल में एक प्रोग्राम चला रहा हूं, जिसमें मैं बच नहीं सकता Ctrl- Cऔर जिसे मैं मारना चाहता हूं। मैं इसका पीआईडी कैसे खोज सकता हूं?
जवाबों:
एक और टर्मिनल खोलें और चलाएं ps ax | grep foo
जहां फू गैर-जिम्मेदार कार्यक्रम का नाम है। इससे आउटपुट की एक पंक्ति वापस आनी चाहिए जो कुछ इस तरह दिखती है:
$ ps ax | grep firefox
2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 pts/2 S+ 0:00 grep --color=auto firefox
आउटपुट की प्रत्येक पंक्ति का पहला क्षेत्र एक संख्या है जो प्रोग्राम की प्रक्रिया आईडी से मेल खाती है grep
(आप सुरक्षित रूप से पिछले एक को अनदेखा कर सकते हैं, जो grep
स्वयं का प्रतिनिधित्व करता है।
अपमानजनक प्रक्रिया को रोकने के लिए, kill pid
जहां :
pid प्रोग्राम की प्रोसेस आईडी है। हो सकता है कि आपको अपने निर्णय का उपयोग करना होगा कि किन-किन मैचों को kill
एड करने की आवश्यकता है , या आप top
इसके बजाय उपयोग कर सकते हैं । kill
स्वयं का उपयोग करके SIGTERM भेजता है, जिसे आपको पहले प्रयास करना चाहिए क्योंकि यह कार्यक्रम को स्वयं के बाद ठीक से साफ करने की अनुमति देता है। यदि SIGTERM विफल हो जाता है, तो SIGHUP का प्रयास करें, जो स्टोंगर दवा है kill -HUP pid
:। यदि अन्य सभी विफल रहता है, तो SIGKILL भेजें। लेकिन, आपको केवल अंतिम उपाय के रूप में ऐसा करना चाहिए, क्योंकि SIGKILL कर्नेल को क्लीनअप की संभावना के साथ प्रक्रिया को तुरंत समाप्त करने का कारण बनता है। यह कई बार डेटा भ्रष्टाचार या अन्य समस्याओं के परिणामस्वरूप हो सकता है। तो फिर, केवल अंतिम उपाय के रूप में SIGKILL भेजें। ऐसा करने के लिए, करो kill -KILL pid
या kill -9 pid
।
यदि आप एक ग्राफिकल इंटरफ़ेस चला रहे हैं, तो निश्चित रूप से, आपको काम करने के लिए इस पागल कमांड-लाइन सामान के साथ मूर्ख बनाने की आवश्यकता नहीं है। बस "सिस्टम मॉनिटर" खोलें, प्रोसेस टैब पर जाएं, उस प्रक्रिया को चुनें जिसे आप रोकना चाहते हैं (एचएम, यह 90% सीपीयू का उपयोग करके एक हो सकता है?) और इसे राइट-क्लिक करें। चूंकि प्रक्रिया पहले से ही बंद है, (यह समस्या है, सही?) परिणामी मेनू से अंतिम प्रक्रिया या किल प्रक्रिया चुनें।
kill -9
खराब सलाह है। मैंने इसका उत्तर सही करने के लिए संपादित किया है।
ping
कमांड के साथ एक लूप होता है और sleep
। Unix.stackexchange.com/a/275826/72988 के अनुसार , यह उबंटू में संभव नहीं है multiplexer
।
मुझे नहीं लगता कि ऐसे लंबे आदेशों की कोई आवश्यकता है जब आप समान आदेशों को pgrep, pkill, pkof आदि के साथ पूरा कर सकते हैं ...
pgrep:
pgrep [options] pattern
वर्णन: pgrep वर्तमान में चल रही प्रक्रियाओं के माध्यम से दिखता है और प्रक्रिया ID को सूचीबद्ध करता है जो चयन मानदंडों से मेल खाता है। सभी मानदंडों का मिलान करना होगा। उदाहरण के लिए,
रूट के स्वामित्व वाली sshd नाम की प्रक्रिया का पता लगाने के लिए।
$ pgrep -u root sshd
रूट या डेमन के स्वामित्व वाली प्रक्रियाओं की सूची बनाएं।
$ pgrep -u root,daemon
pidof:
विवरण :
पिडॉफ नामांकित कार्यक्रमों की प्रक्रिया आईडी (pids) पाता है। यह मानक आउटपुट पर उन आईडी को प्रिंट करता है।
वाक्य रचना: pidof program_name
Pidill pkill उदाहरण द्वारा प्रोग्राम को मारने के लिए:
pkill pid
pkill -f process_name
pkill -o process_name
pkill -n process_name
pkill -l process_name
-f
झंडा: process_name (मैन pkill देखें)
-o
ध्वज खोजता है : केवल सबसे पुरानी मिलान प्रक्रिया का चयन करें।
-n
झंडा: केवल नवीनतम प्रक्रियाओं का चयन करें।
-l
झंडा: प्रक्रिया का नाम और साथ ही प्रक्रिया आईडी को सूचीबद्ध करें।
किसी रनिंग प्रोग्राम की सूचना जानने के लिए सबसे आसान तरीका है:
pidof <application name>
उदाहरण के लिए, यदि आपने विम शुरू किया है और इसके बारे में जानना चाहते हैं:
pidof vim
याद रखें कि आपको सटीक प्रोग्राम नाम प्रदान करना होगा जो शुरू किया गया है।
उदाहरण के लिए, यदि आप vi चला रहे हैं और निष्पादित करें pidof vim
तो आपको सही परिणाम नहीं मिलेंगे।
pidof
अधिक जानकारी के लिए मैनुअल पेज देखें ।
pidof mysqld
एक पीआईडी देता है। हालांकि, अगर मैं टाइप करता हूं तो pidof Mariadb
कुछ भी नहीं लौटाया जाता है। क्या यह MariaDB और MySQL दोनों के लिए समान PID है?
मैंने पाया है कि "-i" को जोड़कर और असंवेदनशील आउटपुट प्राप्त करने के लिए "कुल्हाड़ी" के बजाय "aux" का उपयोग करके केस असंवेदनशील खोज का उपयोग करना अच्छा है:
ps aux | grep -i firefox
यदि आप उन सभी प्रक्रियाओं को मारना चाहते हैं जो आप उपयोग कर सकते हैं:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
यह एक जबरदस्त मार है। यदि आप एक नरम मार चाहते हैं तो "-9" को गिरा दें।
ps aux | grep -i firefox...
प्रक्रिया को भी मारता है, क्योंकि इसमें पाठ शामिल है firefox
!
grep -i firefo[x]
केवल फायरफॉक्स का उपयोग करने के लिए उपयोग कर सकते हैं
उबन्टु 16.04 LTS चलाने वालों के लिए, आपको केवलps ax
ps
कमांड लाइन पर ही उपयोग करना चाहिए , न कि अन्यथा आप केवल उस विशेष टर्मिनल उदाहरण से स्पॉनिंग प्रक्रियाएँ प्राप्त करेंगे जो आप कर रहे हैं। (आमतौर पर सिर्फ 'बैश' [शेल आप कर रहे हैं)। ] और 'ps' [क्या आप अभी भागे हैं])
ps -e
(सभी दिखाता है) और ps -ejH
(एक प्रक्रिया पेड़ दिखाता है)।
आप एक अन्य टर्मिनल भी खोल सकते हैं (या किसी अन्य प्रकार से स्विच कर सकते हैं) और चलाएं top
, जो मूल रूप से सिस्टम मॉनिटर का एक पाठ संस्करण है। पहला कॉलम प्रत्येक चलने वाली प्रक्रिया के PID को सूचीबद्ध करता है, जिसे आप दबाकर मार सकते हैं K, PID में प्रवेश कर सकते हैं और फिर भेजने के लिए एक संख्यात्मक संकेत दर्ज कर सकते हैं।
तुम यह कर सकते थे:
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
पहले दो पाइपों को प्रक्रिया की जानकारी मिलती है, अगले हम पुराने स्कूल के कट का उपयोग करके पीआईडी कॉलम प्राप्त करने की कोशिश करते हैं और फिर हम मारने के लिए परिणामी पीआईडी देते हैं।
kill -9
एक प्रक्रिया को मारने के लिए सबसे बड़ी बंदूक है। प्रक्रिया को अपने संसाधनों को साफ करने का मौका देने के लिए SIGKILL का सहारा लेने से पहले आपको पहले एक अधिक सौम्य संकेत की कोशिश करनी चाहिए।