मैं उबंटू में प्रक्रियाओं को कैसे मार सकता हूं?


149

मैं अपने गैर-रूट खाते द्वारा चल रही सभी प्रक्रियाओं को कैसे मार सकता हूं?

मेरे पास कुछ कताई smbd प्रक्रियाएं हैं जो मैंने अपनी विंडोज़ मशीन से की हैं और इसलिए मैंने linux सर्वर में टेलनेट किया और मैं उन कताई प्रक्रियाओं को मारना चाहता हूं। मेरे पास सेवाओं को पुनरारंभ करने या मशीन को रिबूट करने का अधिकार नहीं है।

जवाबों:


172

उन सभी प्रक्रियाओं को मारने के लिए जिन्हें आपको मारने की अनुमति है, बस कमांड चलाएं

kill -15 -1या kill -9 -1इच्छित व्यवहार के आधार पर ( man killविवरण के लिए उपयोग )

किसी विशिष्ट प्रक्रिया को मारने के लिए, फ़ायरफ़ॉक्स कहें, बस चलाएं

pkill firefoxया killall firefoxआप चाहते हैं कि व्यवहार पर निर्भर करता है: 'किलर' और 'पकिल' के बीच क्या अंतर है?

यदि आप यह देखना चाहते हैं कि कौन सी प्रक्रिया चल रही है तो कमांड का उपयोग करें

ps -ef

यदि आप उपयोगकर्ता बॉब द्वारा सभी प्रक्रियाओं को देखना चाहते हैं, तो यह मदद कर सकता है

pgrep -l -u bob

या

ps -ef | grep bob

4
मैं शुरू करूँगा kill -15 -1, और केवल तभी आगे बढ़ेंगे kill -9 -1जब कोई जिद्दी प्रक्रिया हो और मुझे पता हो कि मैं क्या कर रहा हूँ । बेतरतीब ढंग से हत्या प्रक्रियाओं है कि एक डेटाबेस लेनदेन के बीच में हो सकता है कुछ ऐसा नहीं है जो आपको सुझाव के रूप में लापरवाही से करना चाहिए।
साइमन रिक्टर

इसके अलावा, फ़ायरफ़ॉक्स की प्रक्रिया का नाम है firefox-bin
साइमन रिक्टर

नहीं, आप चल रहा है कोशिश कर सकते हैं killall firefoxऔर killall firefox-binऔर देखो क्या काम करता है। मैं आपकी पहली टिप्पणी से सहमत हूं।
स्टेप_कर

धन्यवाद @ste_kwr, दो दिनों तक संघर्ष करने के बाद, आपके निर्देशों के साथ काम किया ...
Java.beginner

पीआईडी ​​की जरूरत न होने का फायदा क्रॉन जॉब्स में है। नामों का उपयोग सफाई से काम करता है।
एसडीसोलर

56

का उपयोग करें sudo kill <pid>याsudo killall <process-name>


3
मुझे नहीं लगता कि यह इस प्रश्न के लिए प्रासंगिक है, आप sudo का उपयोग कर रहे हैं - ओपी के पास ऐसे विशेषाधिकार नहीं हैं, जैसा कि प्रश्न में उल्लेख किया गया है।
pl1nk

ओपी के पास विशेषाधिकार नहीं हैं, कृपया अपना उत्तर संपादित करें या इसे हटा दिया जा सकता है या "एक उत्तर नहीं" के रूप में टिप्पणी में परिवर्तित किया जा सकता है।
ish

यदि उसके पास विशेषाधिकार नहीं हैं, तो उसे बस <pid> या किलिंग <प्रक्रिया-नाम> को मारना होगा, मैंने अभी इसे अपने गैर रूट खाते में उपयोग किया है, यदि मैं इस उत्तर के लिए नहीं था तो मैं इसे नहीं कर पाऊंगा ।
शालीन ऑर्टिज़

20

चलो कुछ और प्रयास करें:

sudo apt-get install htop 

topआदेश अपने सिस्टम के संसाधन उपयोग देख सकते हैं और प्रक्रियाओं है कि सबसे सिस्टम संसाधनों ले जा रहे हैं देखने के लिए पारंपरिक तरीका है। शीर्ष प्रक्रियाओं की एक सूची प्रदर्शित करता है, शीर्ष पर सबसे अधिक सीपीयू का उपयोग करने वाले के साथ।

htopसमान जानकारी को आसानी से समझने वाले लेआउट के साथ प्रदर्शित करता है। यह आपको तीर कुंजियों के साथ प्रक्रियाओं का चयन करने और कार्रवाई करने की भी अनुमति देता है, जैसे कि उन्हें मारना या उनकी प्राथमिकता को बदलना, Fचाबियों के साथ ।


16

आप उपयोग कर सकते हैं

ps -ax | grep application name 

यदि आपकी खोज टर्मिनल में फ़ायरफ़ॉक्स प्रकार की तरह है ps -ax | grep firefox, तो यह संबंधित एप्लिकेशन की प्रक्रिया आईडी दिखाता है। killयदि प्रक्रिया आईडी = 1317, आप कमांड द्वारा उस एप्लिकेशन को रोक सकते हैं ,

kill -9 1317

13

मैं उपयोग करूंगा xkillxkillएक टर्मिनल में दर्ज करें और विंडो में क्लिक करें, या दर्ज करें xkillऔर प्रक्रिया आईडी और इसे समाप्त कर दिया जाएगा।

X.orgxkill पर अधिक जानकारी मिली


1
Pkill nd इसे प्यार करने के बाद आवृत्ति में इसका दूसरा उपयोग करें। +1
सर्गी कोलोडियाज़नी

इस मामले में xkill doesn't काम करता है ...
PythoNic

@PythoNic किस मामले में है?
अलवर

1
वह एक गैर-विंडो प्रक्रिया को मारना चाहता है जो एक्स सर्वर से संबंधित नहीं है क्योंकि यह मेरे लिए लगता है ... (वैसे भी एक अच्छा उपकरण है)
पायथनोइक

9

उपयोगकर्ता द्वारा स्वामित्व वाली सभी प्रक्रियाओं को मारने का प्रयास करने के लिए username, दौड़ें:

pkill -U username

7

मैं आपकी समस्या को 2 भागों में तोड़ूँगा:

1) मैं अपने द्वारा शुरू की गई प्रक्रियाओं को कैसे पता करूँ? इसे चलाओ:

ps -u `whoami`

whoamiसिर्फ मामले में आप, आप जिस खाते का उपयोग कर रहे हैं उसका नाम पता नहीं है अन्यथा सिर्फ वापस उद्धरण चिह्नों के बिना खाते का नाम टाइप है।

यह उन सभी प्रक्रियाओं को सूचीबद्ध करेगा जिन्हें आपके खाते से हटाया जा सकता है।

2) psकमांड प्रक्रिया संख्या, TTY, समय और CMD को सूचीबद्ध करेगा। प्रक्रिया आईडी पहला कॉलम है। प्रक्रिया को मारने के लिए उस संख्या का उपयोग करें। प्रक्रिया को मारते समय सावधान रहें। यदि आप गलत प्रक्रिया को मारते हैं तो आप कुछ तोड़ सकते हैं। एक प्रक्रिया को मारने के लिए आप killकमांड का उपयोग करेंगे , जो प्रक्रिया को एक संकेत भेजता है। संकेत इंगित करता है कि प्रक्रिया को क्या करना चाहिए । उदाहरण के लिए, -1प्रक्रिया को भेजने से यह कॉन्फ़िगरेशन फ़ाइल को फिर से लोड करने के लिए कहेगा; एक भेजना -2उस प्रक्रिया पर नियंत्रण + सी दबाने के बराबर है; -9कर्नेल को इस प्रक्रिया को छोड़ने के बिना, प्रक्रिया को छोड़ने का कारण बनेगा।

मान लिया कि पीएसयू whoamiकुछ इस तरह लौटा

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 4335 ?        00:00:00 fishd
 4816 ?        00:00:00 intellij
 4868 ?        00:50:42 java
 4939 ?        00:00:19 fsnotifier64
 7667 ?        02:49:08 firefox
 7698 ?        00:00:00 unity-webapps-s

और आप firefoxइसकी प्रक्रिया आईडी द्वारा प्रक्रिया को मारना चाहते थे , तब आप करेंगे:

kill -1 7667

फिर आप उसी psकमांड को फिर से चलाएंगे और जांचेंगे कि क्या प्रक्रिया अभी भी चल रही थी। यदि यह अभी भी चल रहा है, तो ए करें

kill -2 7667

अपने तरीके से काम करना -9

अपने खाते द्वारा शुरू की गई सभी प्रक्रियाओं को मारने के लिए, दर्ज करें kill <level> -1। पहले की तरह ही: अपने तरीके से काम करें -9

यदि आप उस प्रक्रिया का नाम जानते हैं जो आप जा सकते हैं killall <processname>, तो वह वही है जो आप मारने की कोशिश कर रहे हैं। उदाहरण के लिए: killall fish(मछली, इस अर्थ में, मैत्रीपूर्ण इंटरएक्टिव शेल है)।

इसके लिए दस्तावेज killallयहां देखे जा सकते हैं: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html


3

इस आवेदन के साथ आप कार्यक्रम लिस्टिंग देख सकते हैं

htop स्थापित करें

sudo apt-get install htop

प्रक्रिया को देखने और मारने की प्रक्रिया के लिए आप इसे स्थापित कर सकते हैं और बस हटा सकते हैं

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


2

... लिनक्स में सभी प्रक्रियाएं संकेतों का जवाब देती हैं। सिग्नल अपने व्यवहार को समाप्त करने या संशोधित करने के लिए कार्यक्रमों को बताने का एक ओएस-स्तरीय तरीका है।

पीआईडी ​​द्वारा प्रक्रिया संकेत कैसे भेजें

किसी प्रोग्राम में सिग्नल पास करने का सबसे आम तरीका किल कमांड के साथ है।

जैसा कि आप उम्मीद कर सकते हैं, इस उपयोगिता की डिफ़ॉल्ट कार्यक्षमता एक प्रक्रिया को मारने का प्रयास है:

kill PID_of_target_process

यह प्रक्रिया को TERM सिग्नल भेजता है। TERM सिग्नल समाप्त होने की प्रक्रिया को बताता है। यह प्रोग्राम को क्लीन-अप ऑपरेशन करने और सुचारू रूप से बाहर निकलने की अनुमति देता है।

यदि प्रोग्राम दुर्व्यवहार कर रहा है और TERM सिग्नल दिए जाने पर बाहर नहीं निकलता है, तो हम KILLIVE पास करके सिग्नल को बढ़ा सकते हैं:

kill -KILL PID_of_target_process

यह एक विशेष संकेत है जिसे कार्यक्रम में नहीं भेजा जाता है।

इसके बजाय, यह ऑपरेटिंग सिस्टम कर्नेल को दिया जाता है, जो प्रक्रिया को बंद कर देता है। यह उन कार्यक्रमों को बायपास करने के लिए उपयोग किया जाता है जो उन्हें भेजे गए संकेतों को अनदेखा करते हैं ...


2

मैंने एक छोटी सी स्क्रिप्ट लिखी थी जिसे मैंने मारने के लिए लिखा था (मेरे मामले में) स्काइप:

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

लेकिन मैंने पाया कि उसके बाद जितना काम किया गया था, वह अगले दिन काम नहीं आया क्योंकि पिड की लंबाई अलग थी और वहाँ रिक्त स्थान की मात्रा अलग थी

फिर मैं इस साइट पर आया और कोशिश की

pgrep -l -u justin

जो आसानी से प्रारूप में प्रक्रियाओं का उत्पादन करता है

[pid] [name]

इसलिए मैंने स्क्रिप्ट में अपना कोड इस पर समायोजित किया:

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

यह क्या करता है पाइप सभी प्रक्रियाओं justinके चल रहे हैं (जिसे किसी भी उपयोगकर्ता नाम में बदला जा सकता है) grepजिसके लिए दिखता है skype(इसे आपकी प्रक्रिया में बदला जा सकता है) और फिर उस पंक्ति को पाइप करता है cutजिसमें तब केवल पीआईडी ​​पढ़ता है और अंत में उसका उपयोग करता है killइसे मारने के लिए कमांड में पीआईडी ।


आप को गिरा सकते हैं -l, और भाग सकते हैं pgrep -u justin skype, और मारने के लिए: pkill -u justin skype(या pkill -KILL -u justin skypeSIGKILL भेजने के लिए)।
मूरू

यह निश्चित रूप से यूनिक्स वे है। अच्छा हुआ आप दोनों। मैं इसका उपयोग करूंगा।
एसडीसोलर

1

यहां मैंने एक सरल अजगर स्क्रिप्ट लिखी है, जो कि किलप्रोसेसहोम है, जो इनपुट के रूप में कुछ भी स्वीकार करेगा और उसे मार देगा।

मैंने यह स्क्रिप्ट लिखी है क्योंकि मेरे पास बहुत सारे अजगर या नोड प्रक्रिया हैं जिन्हें मैं व्यक्तिगत और प्रोग्रामिक रूप से मारना चाहता हूं। मैं "किलॉल पायथन" का उपयोग नहीं कर सकता क्योंकि यह उन प्रक्रियाओं को रोक देगा जिन्हें मुझे चालू रखने की आवश्यकता है।

कृपया फ़ाइल को "KillProcess.py" नाम दें, फिर उस स्क्रिप्ट का नाम जोड़ें जिसे आप रोकना चाहते हैं। जैसे: python KillProcess.py runnablePoller.py, runnablePoller.py फ़ाइल को मार डालेगा

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));

0

मैंने उबंटू में एक प्रक्रिया को मारने के लिए निम्नलिखित प्रक्रिया का उपयोग किया ::

चरण 1: grep का उपयोग करके प्रक्रिया की गति प्राप्त करें या आप -C का उपयोग कर सकते हैं ::

ps aux | -C 'filename'

या

ps -ef | -C 'filename'

या

ps aux | grep 'filename'

या

ps -ef | grep 'filename' 

चरण 2: पीआईडी ​​नंबर नोट करें।

चरण 3: 'किल' कमांड का उपयोग पिड नंबर के साथ करें:

kill pidnumber

0

Ctrl+ Alt+ Deleteआपको कार्य प्रबंधक तक पहुंच प्रदान करने के लिए सेट किया जा सकता है, जहां से कुछ क्लिकों के साथ प्रक्रियाओं को मारना आसान है, और मेरे लिए, गलत याद रखने वाले आदेशों को याद रखने के लिए कम आवश्यकता है जो गलत हो सकता है:

http://ubuntuhandbook.org/index.php/2013/07/use-ctrl-alt-del-task-manager-ubuntu/

https://www.itsmarttricks.com/a-guide-to-kill-pkill-and-killall-commands-to-stop-the-process-in-linux-kill-process-linux/

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