मैं टर्मिनल में एक प्रोग्राम चला रहा हूं जिससे मैं बच नहीं सकता Ctrl-C और जिसे मैं मारना चाहता हूं । मैं इसका पीआईडी कैसे पा सकता हूं?
एक और टर्मिनल खोलें और चलाएं ps ax | grep foo
जहां फू अनुत्तरदायी कार्यक्रम का नाम है । यह आउटपुट की एक पंक्ति वापस करनी चाहिए जो कुछ इस तरह दिखती है:
$ ps ax | grep firefox2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin30290 pts/2 S+ 0:00 grep --color=auto firefox
आउटपुट की प्रत्येक पंक्ति का पहला क्षेत्र एक संख्या है जो प्रोग्राम की प्रक्रिया आईडी का प्रतिनिधित्व करता है grep
(आप पिछले एक को सुरक्षित रूप से अनदेखा कर सकते हैं, जो प्रतिनिधित्व करता है grep
खुद ।
अपमानजनक प्रक्रिया को रोकने के लिए, करें:kill pid
जहां पीआईडी कार्यक्रम की प्रक्रिया आईडी है । आपको अपने निर्णय का उपयोग करना पड़ सकता है कि कौन से मैच होने चाहिए kill
एड, या आप उपयोग कर सकते हैं top
बजाय. का उपयोग करना kill
अपने आप से सिगटर्म भेजता है, जिसे आपको पहले प्रयास करना चाहिए क्योंकि यह प्रोग्राम को खुद के बाद ठीक से साफ करने की अनुमति देता है । यदि सिगटर्म विफल हो जाता है, तो सिघुप का प्रयास करें, जो कि स्टॉन्गर दवा है: kill -HUP pid
. यदि बाकी सब विफल हो जाता है, तो सिगकिल भेजें । लेकिन, आपको केवल अंतिम उपाय के रूप में ऐसा करना चाहिए, क्योंकि सिगकिल कर्नेल को सफाई की कोई संभावना नहीं होने के साथ प्रक्रिया को तुरंत समाप्त करने का कारण बनता है । इससे कई बार डेटा भ्रष्टाचार या अन्य समस्याएं हो सकती हैं । तो फिर, केवल सिगकिल को अंतिम उपाय के रूप में भेजें । ऐसा करने के लिए, करो kill -KILL pid
या kill -9 pid
.
यदि आप एक ग्राफिकल इंटरफ़ेस चला रहे हैं, बेशक, आप इस पागल कमांड लाइन सामान के साथ मूर्ख काम पाने के लिए नहीं है । बस "सिस्टम मॉनिटर" खोलें, प्रक्रिया टैब पर नेविगेट करें, उस प्रक्रिया को चुनें जिसे आप रोकना चाहते हैं (एचएम, क्या यह 90% सीपीयू का उपयोग कर सकता है?) और इसे राइट-क्लिक करें । चूंकि प्रक्रिया पहले ही बंद हो चुकी है, (यह समस्या है, है ना?) परिणामी मेनू से एंड प्रोसेस या किल प्रोसेस चुनें ।
को श्रेय koanhead
मुझे नहीं लगता कि ऐसे लंबे आदेशों की कोई आवश्यकता है जब आप पीजीआरईपी, पीकिल, पीआईडीओएफ आदि के साथ समान आदेशों को पूरा कर सकें । ..
- रनिंग-प्रोग्राम का पीआईडी प्राप्त करने के लिए
pgrep:
pgrep [options] pattern
विवरण : पीजीआरईपी वर्तमान में चल रही प्रक्रियाओं को देखता है और प्रक्रिया आईडी को सूचीबद्ध करता है जो चयन मानदंड से स्टडआउट से मेल खाता है । सभी मानदंडों का मिलान करना होगा । उदाहरण के लिए,
-
रूट के स्वामित्व वाले एसएसएचडी नाम की प्रक्रिया को खोजने के लिए ।
$ pgrep -u root sshd
-
रूट या डेमॉन के स्वामित्व वाली प्रक्रियाओं की सूची बनाएं ।
$ pgrep -u root,daemon
pidof:
विवरण:
पीआईडीओएफ नामित कार्यक्रमों की प्रक्रिया आईडी (पीआईडी) पाता है । यह उन आईडी को मानक आउटपुट पर प्रिंट करता है ।
सिंटेक्स: pidof program_name
-
पीआईडी द्वारा एक प्रोग्राम को मारने के लिए पीकेआईएलएक्स उदाहरण का उपयोग करें:
pkill pid pkill -f process_name pkill -o process_name pkill -n process_name pkill -l process_name
-f
ध्वज: प्रक्रिया_नाम खोजता है (मैन पीकिल देखें)-o
ध्वज: मिलान प्रक्रियाओं में से केवल सबसे पुरानी का चयन करें ।-n
ध्वज: मिलान प्रक्रियाओं में से केवल नवीनतम का चयन करें ।-l
ध्वज: प्रक्रिया का नाम और साथ ही प्रक्रिया आईडी सूचीबद्ध करें ।
चल रहे प्रोग्राम के पीआईडी को जानने का सबसे आसान तरीका उपयोग कर रहा है:
pidof <application name>
उदाहरण के लिए, यदि आपने विम शुरू किया है और इसका पीआईडी जानना चाहते हैं:
pidof vim
याद रखें कि आपको शुरू किया गया सटीक प्रोग्राम नाम प्रदान करना होगा ।
उदाहरण के लिए, यदि आप चल रहे हैं छठी और निष्पादित pidof vim
आपको सही परिणाम नहीं मिलेंगे ।
का संदर्भ लें pidof
अधिक जानकारी के लिए मैनुअल पेज ।
मैंने पाया है कि अधिक वर्णनात्मक आउटपुट प्राप्त करने के लिए "-आई" जोड़कर और "एक्स" के बजाय "ऑक्स" का उपयोग करके केस असंवेदनशील खोज का उपयोग करना अच्छा है:
ps aux | grep -i firefox
यदि आप उन सभी प्रक्रियाओं को मारना चाहते हैं जिनका आप उपयोग कर सकते हैं:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
यह एक जबरदस्त हत्या है । ड्रॉप "-9" यदि आप एक नरम मार चाहते हैं ।
यदि आप केवल पीआईडी चाहते हैं (ऑटोकिल स्क्रिप्ट के लिए उपयोगी, आदि । ..)
pgrep -f desired_program_name
उबंटू 16.04 एलटीएस चलाने वालों के लिए, आप चाहिए उपयोग करें ps ax
और सिर्फ नहीं ps
कमांड लाइन पर, अन्यथा आप केवल उस विशेष टर्मिनल उदाहरण से प्रक्रियाओं को प्राप्त करेंगे जो आप में हैं । (आमतौर पर सिर्फ 'बैश' [जिस शेल में आप हैं] और ' पीएस '[जो आप अभी भागे हैं])
आप एक और टर्मिनल भी खोल सकते हैं (या किसी अन्य टीटीई पर स्विच कर सकते हैं) और चला सकते हैं top
, जो मूल रूप से सिस्टम मॉनिटर का एक टेक्स्ट संस्करण है । पहला कॉलम प्रत्येक चल रही प्रक्रिया के पीआईडी को सूचीबद्ध करता है, जिसे आप दबाकर मार सकते हैं K, पीआईडी दर्ज करना और फिर भेजने के लिए एक संख्यात्मक संकेत दर्ज करना ।
आप कर सकते हैं:
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
पहले दो पाइपों को प्रक्रिया की जानकारी मिलती है, आगे हम पुराने स्कूल कट का उपयोग करके पीआईडी कॉलम प्राप्त करने का प्रयास करते हैं और फिर हम परिणामस्वरूप पीआईडी को मारने के लिए देते हैं ।
top
या
screen -list|ls
संबंधित प्रक्रिया के साथ सभी पीआईडी की सूची बनाएं
kill -[pid]
यह एक शाखा है [उबंटू फ्रीज होने पर मुझे क्या करना चाहिए?] (performance - What should I do when Ubuntu freezes? - Ask Ubuntu) उस प्रश्न में विवरण को बहुत तकनीकी बनने से रोकने के संदर्भ के रूप में ।
वहाँ है एक pidof आदेश.