Wie kann ich Prozesse in Ubuntu beenden?


149

Wie kann ich alle Prozesse beenden, die von meinem eigenen Nicht-Root-Konto ausgeführt werden?

Ich habe einige spinnende smbd Prozesse, die ich von meinem Windows-Computer verursachte und so telnetted ich in den Linux-Server und ich möchte diese spinnenden Prozesse beenden. Ich habe keine Berechtigung zum Neustarten von Diensten oder zum Neustarten des Computers.

Antworten:


172

Führen Sie einfach den Befehl aus, um alle Prozesse abzubrechen, für die Sie die Berechtigung zum Abbrechen haben

kill -15 -1oder kill -9 -1je nach gewünschtem Verhalten ( man killfür Details verwenden)

Um einen bestimmten Prozess zu beenden, z. B. Firefox, führen Sie einfach aus

pkill firefoxoder killall firefoxje nach gewünschtem Verhalten: Was ist der Unterschied zwischen 'killall' und 'pkill'?

Wenn Sie sehen möchten, welche Prozesse ausgeführt werden, verwenden Sie den Befehl

ps -ef

Wenn Sie alle Prozesse nach Benutzer bob durchsuchen möchten, kann dies hilfreich sein

pgrep -l -u bob

oder

ps -ef | grep bob

4
Ich würde damit anfangen kill -15 -1und nur weitermachen, kill -9 -1wenn es hartnäckige Prozesse gibt und ich weiß, was ich tue . Das zufällige Beenden von Prozessen, die sich möglicherweise mitten in einer Datenbanktransaktion befinden, sollte nicht so beiläufig erfolgen, wie Sie es vorschlagen.
Simon Richter

Auch der Prozess von Firefox heißt firefox-bin.
Simon Richter

Nein, können Sie versuchen , Laufen killall firefoxund killall firefox-binsehen , was funktioniert. Ich stimme Ihrem ersten Kommentar zu.
ste_kwr

Vielen Dank @ste_kwr, arbeitete mit Ihren Anweisungen, nach zwei Tagen zu kämpfen ...
Java.Anfänger

Der Vorteil, keine PIDs zu benötigen, liegt in Cronjobs. Die Verwendung von Namen funktioniert einwandfrei.
SDsolar

56

Verwenden Sie sudo kill <pid>odersudo killall <process-name>


3
Ich denke nicht, dass dies für diese Frage relevant ist, Sie verwenden sudo - das OP verfügt nicht über solche Berechtigungen, wie in der Frage erwähnt.
Freitag,

Das OP hat keine Rechte, bitte bearbeiten Sie Ihre Antwort oder es kann gelöscht oder in einen Kommentar als "keine Antwort" umgewandelt werden.
ish

Wenn er keine Rechte hat, muss er nur kill <pid> oder killall <process-name> ausführen. Ich habe es nur in meinem Nicht-Root-Konto verwendet. Ohne diese Antwort wäre ich dazu nicht in der Lage .
Shailyn Ortiz

20

Versuchen wir etwas mehr:

sudo apt-get install htop 

Der topBefehl ist die herkömmliche Methode, um die Ressourcennutzung Ihres Systems und die Prozesse anzuzeigen, die die meisten Systemressourcen beanspruchen. Top zeigt eine Liste der Prozesse an, wobei die Prozesse mit der höchsten CPU-Auslastung oben angezeigt werden.

htopzeigt dieselben Informationen mit einem einfacheren Layout an. Sie können damit auch Prozesse mit den Pfeiltasten auswählen und Aktionen wie das Beenden oder Ändern der Priorität mit den FTasten ausführen .


16

Sie können verwenden

ps -ax | grep application name 

Wenn Sie nach firefox suchen ps -ax | grep firefox, geben Sie terminal like ein , es zeigt die Prozess-ID der entsprechenden Anwendung. Sie können diese Anwendung per killBefehl stoppen, wenn Prozess-ID = 1317,

kill -9 1317

13

Ich würde verwenden xkill. Geben Sie xkillin ein Terminal ein und klicken Sie in das Fenster, oder geben Sie xkilldie Prozess-ID ein und es wird beendet.

Erfahren Sie mehr über xkillauf x.org.


1
Verwenden Sie es an zweiter Stelle in der Häufigkeit nach pkill nd lieben es. +1
Sergiy Kolodyazhnyy

xkill funktioniert in diesem Fall nicht ...
PythoNic

@PythoNic in welchem ​​Fall ist das?
Alvar

1
Er möchte einen Nicht-Fenster-Prozess
beenden

9

usernameFühren Sie Folgendes aus, um zu versuchen, alle Prozesse eines Benutzers zu beenden:

pkill -U username

7

Ich würde Ihr Problem in zwei Teile aufteilen:

1) Wie finde ich die von mir gestarteten Prozesse? Führen Sie Folgendes aus:

ps -u `whoami`

Dies whoamiist nur für den Fall, dass Sie den Namen des verwendeten Kontos nicht kennen, andernfalls geben Sie einfach den Namen des Kontos ohne die Anführungszeichen ein.

Daraufhin werden alle Prozesse aufgelistet, die von Ihrem Konto gelöscht werden können.

2) Der psBefehl listet die Prozessnummer, TTY, Zeit und CMD auf. Die Prozess-ID ist die erste Spalte. Verwenden Sie diese Nummer, um den Vorgang abzubrechen. Seien Sie vorsichtig, während Sie den Prozess beenden. Sie könnten etwas kaputt machen, wenn Sie den falschen Prozess beenden. Um einen Prozess abzubrechen, verwenden Sie den killBefehl, der ein SIGNAL an den Prozess sendet. Das Signal zeigt an, was der Prozess sollte tun. Wenn Sie beispielsweise ein -1an den Prozess senden , werden Sie aufgefordert, die Konfigurationsdatei neu zu laden. Das Senden von a -2entspricht dem Drücken von Strg + C bei diesem Vorgang. -9führt dazu, dass der Kernel den Prozess abbricht, ohne ihn dem Prozess mitzuteilen.

Angenommen, ps -u hat so whoamietwas wie zurückgegeben

  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

Und Sie wollten den firefoxProzess anhand seiner Prozess-ID beenden, dann würden Sie Folgendes tun:

kill -1 7667

Anschließend führen Sie denselben psBefehl erneut aus und prüfen, ob der Prozess noch ausgeführt wird. Wenn es noch läuft, dann mache a

kill -2 7667

arbeiten Sie sich bis zu -9.

Geben Sie ein, um alle von Ihrem Konto gestarteten Prozesse abzubrechen kill <level> -1. Gleich wie zuvor: Arbeiten Sie sich nach oben -9.

Wenn Sie den Namen des Prozesses kennen, können Sie einfach dorthin gehen killall <processname>, wo Sie ihn zu töten versuchen. Zum Beispiel: killall fish(Fisch ist in diesem Sinne die Friendly Interactive SHell).

Dokumentation für killallfinden Sie hier: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html


3

Mit dieser Anwendung können Sie Programmlisten anzeigen

Installieren Sie htop

sudo apt-get install htop

siehe Prozess und Kill-Prozess Sie können es installieren und einfach löschen

Bildbeschreibung hier eingeben


2

... Alle Prozesse in Linux reagieren auf Signale. Mit Signalen können Programme auf Betriebssystemebene angewiesen werden, ihr Verhalten zu beenden oder zu ändern.

So senden Sie Prozesssignale per PID

Am häufigsten werden Signale mit dem Befehl kill an ein Programm übergeben.

Wie zu erwarten ist, besteht die Standardfunktionalität dieses Dienstprogramms darin, zu versuchen, einen Prozess abzubrechen:

kill PID_of_target_process

Dadurch wird das TERM-Signal an den Prozess gesendet. Das TERM-Signal weist den Prozess an, den Vorgang zu beenden. Auf diese Weise kann das Programm Bereinigungsvorgänge ausführen und reibungslos beenden.

Wenn sich das Programm schlecht verhält und das TERM-Signal nicht ausgegeben wird, können wir das Signal durch Übergabe des KILL-Signals eskalieren:

kill -KILL PID_of_target_process

Dies ist ein spezielles Signal, das nicht an das Programm gesendet wird.

Stattdessen wird es dem Betriebssystemkern übergeben, der den Prozess herunterfährt. Hiermit werden Programme umgangen, die die an sie gesendeten Signale ignorieren ...


2

Ich habe ein kleines Skript geschrieben, das ich geschrieben habe, um (in meinem Fall) Skype zu töten:

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

Aber ich fand, dass so viel wie das dann funktionierte, es am nächsten Tag nicht funktionierte, weil das pid eine andere Länge hatte und dort für die Menge der Räume unterschiedlich war

Dann bin ich auf diese Seite gestoßen und habe es versucht

pgrep -l -u justin

die bequem Prozesse im Format ausgibt

[pid] [name]

Also habe ich meinen Code im Skript folgendermaßen angepasst:

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

Das bedeutet, dass alle Prozesse justinausgeführt werden (die in einen beliebigen Benutzernamen geändert werden können), zu grepdenen gesucht wird skype(dies kann in Ihren Prozess geändert werden), und dann die Leitung weitergeleitet werden, zu cutder dann nur die PID gelesen und letztendlich verwendet wird PID im killBefehl, um es zu töten.


Sie hätten die fallen lassen -lund rennen pgrep -u justin skypeund töten können: pkill -u justin skype(oder pkill -KILL -u justin skypeSIGKILL senden).
muru

Dies ist definitiv der Unix-Weg. Gut gemacht ihr beide. Ich werde dieses verwenden.
SDsolar

1

Hier ist ein einfaches Python-Skript, killProcess.py, das alles als Eingabe akzeptiert und das beendet.

Ich habe dieses Skript geschrieben, weil ich viele Python- oder Knotenprozesse habe, die ich einzeln und programmgesteuert beenden möchte. Ich kann "killall python" nicht verwenden, weil es die Prozesse stoppt, die ich brauche, um weiter zu laufen.

Benennen Sie die Datei "killProcess.py" und fügen Sie den Namen des Skripts hinzu, das Sie stoppen möchten. Beispiel: python killProcess.py runnablePoller.py beendet die Datei 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

Ich habe folgende Prozedur verwendet, um einen Prozess in Ubuntu zu beenden:

Schritt 1: Holen Sie sich die PID des Prozesses mit grep oder verwenden Sie -C auch:

ps aux | -C 'filename'

oder

ps -ef | -C 'filename'

oder

ps aux | grep 'filename'

oder

ps -ef | grep 'filename' 

Schritt 2: Notieren Sie die PID-Nummer.

Schritt 3: Verwenden Sie den Befehl 'kill' zusammen mit der PID-Nummer als:

kill pidnumber

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.