So beenden Sie den Prozess nach Namen in Linux

Erzwingen Sie das Beenden fehlerhafter Prozesse mit diesen Linux-Befehlen

Um die Bedeutung eines „Prozesses“ mit den einfachsten Worten zu erklären, ist es eine laufende Instanz einer beliebigen Anwendung oder eines Programms auf Ihrem System. Möglicherweise führen Sie mehrere Anwendungen gleichzeitig aus, z. B. Surfen, Musik hören auf Ihrem Terminal usw. Es gibt viele Hintergrundprozesse, die mit diesen Anwendungen verbunden sind und vom Benutzer ausgeführt werden.

Jede Anwendung oder jedes Programm, das auf Ihrem System ausgeführt wird, erstellt mehrere Prozesse, die Ihrer einzelnen Anwendung zugeordnet sind. Manchmal kann dies ein Problem sein und diese Prozesse loszuwerden ist die einzige Möglichkeit, die Sie haben.

Einen Prozess zu „killen“ ist eine nützliche Option, die Linux Ihnen bietet, um die laufenden Prozesse zu stoppen, sei es ein Vordergrundprozess oder ein Hintergrundprozess. In diesem Artikel werden wir die Befehle wie töten, pkill und alle töten um das Beenden eines Prozesses auf einem System zu erzwingen.

Warum einen Prozess beenden?

Es ist wichtig, das Konzept des Beendens eines Prozesses zu verstehen, bevor Sie mit diesem Tutorial fortfahren. Töten mag eine sehr brutale Art sein, das Konzept auszudrücken, aber im übertragenen Sinne bedeutet es, einen Prozess gewaltsam abzubrechen.

Warum nun einen laufenden Prozess abbrechen oder beenden? Wenn mehrere Prozesse im Hintergrund ausgeführt werden, können alle oder einige von ihnen nicht funktionieren und Ihr System kann sich schlecht verhalten. Dies verzögert Ihre laufenden Aufgaben, da der fehlerhafte Prozess Ihr System für eine Weile einfrieren kann.

Manchmal scheint das Beenden aller fehlerhaften Prozesse die einzige Option zu sein, um die Normalität auf Ihrem System wiederherzustellen. Linux ermöglicht es Ihnen, einen Prozess mit der pid oder der Prozessname.

Verwendung der pgrep Befehl

Die meisten Linux-Benutzer kennen die grep Befehl. Der pgrep Befehl kann in ähnlichen Zeilen des verwendet werden grep.

pgrep Befehl, wenn verwendet, zeigt die pid des laufenden Prozesses, wie im Befehl angegeben. Dieser Befehl wird sich als sehr hilfreich erweisen, wenn Sie die pkill Befehl.

Allgemeine Syntax:

pgrep [Optionen] [Muster]

Wichtige Optionen mit dem pgrep Befehl

MöglichkeitBeschreibung
-uProzess-ID auflisten, die einem bestimmten Benutzer gehört
-CAnzahl der passenden Prozesse zählen
-ICHnur Prozessnamen auflisten
-einvollständigen Pfad des Prozessnamens auflisten

Lassen Sie uns die Verwendung von demonstrieren pgrep Befehl anhand eines Beispiels.

pgrep -u gaurav gnome

Hier möchten wir die pids des Prozessgnomes, der dem Benutzer „gaurav“ gehört. Möglichkeit -u ermöglicht Ihnen die Auflistung der pids der Prozesse, die einem bestimmten Benutzer gehören. In diesem Fall Benutzer gaurav.

Ausgabe:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Während wir mit diesem Tutorial fortfahren, pgrep Befehl hilft uns bei der Bestätigung, ob der Prozess beendet wurde oder noch läuft.

Kommen wir nun zum pkill Befehl und seine Ausführung.

Verwenden von pkill Befehl

Du kannst den ... benutzen pkill Befehl in Linux, um den Prozess mit dem Prozessnamen zu beenden. Auch wenn du das nicht kennst pid eines Prozesses, selbst dann können Sie diesen bestimmten Prozess mit der pkill Befehl.

Die Prozesse können mit ihrem vollständigen Namen oder dem Teilnamen unter Verwendung der . angegeben werden pkill Befehl. Auch wenn Sie den Teilnamen des Prozesses eingeben, pkill Der Befehl gleicht alle laufenden Prozesse mit dem übereinstimmenden Namen ab, den Sie im Befehl eingegeben haben.

Syntax:

pkill [Optionen][Prozessname_Muster] 

Beispiel:

Lassen Sie uns die aktuell laufenden Prozesse mit dem oben Befehl. Sie können auch die ps Befehl, um die Prozesse aufzulisten.

oben
top - 14:24:02 up 3:12, 1 User, Load Average: 0.29, 0.48, 0.58 Tasks: 221 insgesamt, 1 läuft, 172 schlafend, 0 gestoppt, 1 Zombie %Cpu(s): 5.6 us, 1.0 Sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3928240 gesamt, 610456 frei, 2233152 verwendet, 1084632 Buff/Cache KiB Swap: 4083708 gesamt, 3378884 frei, 704824 verwendet. 1187268 Available Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4077 Gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15:13,23 Web Content 3712 Gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9:28,39 MainThread 2010 Gaurav 20 0 4084232 111096 45024 S 1,7 2,8 3:14,85 gnome-shell 1197 root 20 0 1039612 33704 22988 S 1,0 0,9 3:04,42 Xorg 1426 couchdb 20 0 3772396 16908 2520 S 0,7 0,4 1:50,83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0,7 0,6 0:06,84 Gnom-Terminal- 3915 Gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0:54,42 Web-Inhalt 4146 Gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2:01,21 Web-Inhalt 4417 Gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59.90 Webinhalt 4860 Gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 Webinhalt 16007 Gaurav 20 0 41944 3780 3116 R 0.7 0.1 0:00.28 top 

Verwenden von oben Befehl zeigt mehrere Prozesse auf Ihrem Terminal an. Versuchen wir, den Prozess mit einem bestimmten Namen anzuzeigen. Wir werden die verwenden grep Befehl, um einen Prozess anzuzeigen, dessen Name mit der Zeichenfolge ‚mongo‘ übereinstimmt.

Nach oben | grep -i mongo

Notiz: Hier habe ich die Option -i verwendet, um die Suche unabhängig von der Groß-/Kleinschreibung zu machen.

Die Ausgabe dieses Befehls zeigt die Prozesse an, die dem Namen „mongo“ entsprechen.

 1158 Mongodb 20 0 288564 4848 1320 S 0.7 0.1 1:03.22 Mongod 1158 Mongod 20 0 288564 4848 1320 S 1.0 0.1 1:03.25 Mongod 1158 Mongod 20 0 288564 4848 1320 S 0.7 0.1 1:03.27 Mongod 1158 Mongodb 20 0 288564 4848 1320 S 0.7 0.1 1:03.29 mongod 1158 mongod 20 0 288564 4848 1320 S 0.7 0.1 1:03.31 mongod 1158 mongod 20 0 288564 4848 1320 S 0.7 0.1 1:03.33 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0.1 1:03.36 mongod . 1158 mongod 20 0 288564 4848 1320 S 0.7 0.1 1:03.38 mongod 1158 mongod 20 0 288564 4848 1320 S 0.7 0.1 1:03.40 mongod 1158 mongod 20 0 288564 4848 1320 S 1.0 0.1 1:03.43 mongod 1158 mongod 20 0 288564 4848 1320 S 0.7 0.1 1:03.45 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0.1 1:03.48 mongod 1158 mongodb 20 0 288564 4848 1320 S 0.3 0.1 1:03.49 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0.1 1:03.52 mongod 1158 mongodb 20 0 288564 4848 1320 S 0.7 0.1 1:03.54 mongod 1158 mongod 20 0 288564 4848 1320 S 1.0 0.1 1:03.57 mongod

Jetzt verwenden wir die pkill Befehl, um den Prozess namens 'mongo' zu beenden.

pkill mongo

Dieser Befehl beendet nun den Prozess Mongo. Wir können bestätigen, ob der Prozess zum Beenden gezwungen wurde, indem wir die pgrep Befehl, der die anzeigt pid des laufenden Prozesses nach den vom Benutzer vorgegebenen Kriterien.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Dieser Befehl gibt keinen Wert zurück. Dies bestätigt, dass der Prozess "Mongo" jetzt mit dem beendet wird pkill Befehl.

Häufig verwendete Optionen mit pkill Befehl

Während der Verwendung des pkill Befehl benötigen wir die genannten Optionen für eine korrekte und mühelose Verwendung der pkill Befehl.

OptionenBeschreibung
-FVergleich mit vollständigen Argumenten, einschließlich Leerzeichen, Anführungszeichen, Sonderzeichen
-uum den pkill-Prozess so zu informieren, dass er mit dem Prozess übereinstimmt, der vom angegebenen Benutzer ausgeführt wird
-1lädt den Prozess neu
-9tötet den Prozess
-15bricht einen Vorgang anmutig ab

Sehen wir uns noch ein Beispiel für pkill Befehl mit dem -F Möglichkeit.

Auf dem Terminal werden derzeit zwei Befehle ausgeführt, wie unten gezeigt.

ping bbc.com ping youtube.com

Beide Prozesse werden von der Klingeln Befehl. Angenommen, wir möchten nur einen Prozess „ping youtube.com“ beenden, dann müssen wir den -F Option mit der pkill Befehl, der einen Prozess mit einem bestimmten Namen beendet, einschließlich der Leerzeichen und Anführungszeichen aus dem Prozessnamen.

Befehl:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

Ergebnis:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) Byte Daten. 64 Bytes von bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms 64 Bytes von bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=2 ttl =117 Zeit=121 ms 64 Bytes von bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 Zeit=86,5 ms 64 Bytes von bom12s08-in-f14.1e100.net (142.250.67.206 .) ): icmp_seq=207 ttl=117 time=105 ms Beendet gaurav@ubuntu:~$ 

Hier die "youtube.com anpingen”-Prozess wird jetzt beendet und die “ping bbc.com“ läuft noch auf dem Terminal.

Falls wir das benutzt hätten pkill ping Befehl, es hätte beide getötet Klingeln Prozesse, die unerwünscht sind.

Signale verwendet mit pkill Befehl

pkill zwingt einen Prozess zum Beenden, indem ein bestimmtes Signal an diesen Prozess gesendet wird. Es gibt drei mögliche Signale, die pkill Befehl an den Prozess senden könnte, abhängig von dem Befehl, den der Benutzer gibt.

Es folgt die Liste der verfügbaren Signale.

SignalSpezifikation
1(HUP)lädt den angegebenen Prozess neu
9 (TÖTEN)beendet den angegebenen Prozess
15 (BEGRIFF)stoppt oder bricht den angegebenen Vorgang sanft ab

Für dieses Tutorial verlassen wir uns stark auf die TÖTEN Signal. Lassen Sie uns einige Beispiele durchgehen, um es besser zu verstehen.

Verwendung der pgrep Befehl, um die zu bekommen pid passend zum Namen Apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -Kill Apache

ODER Sie können den Befehl auch mit Zahlen verwenden (z. B. 1, 9, 15)

pkill -9 Apache

Beide oben gezeigten Befehle beenden den Prozess Apache. Bestätigen mit pgrep Befehl wieder.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Als die pgrep Befehl gibt keine Ausgabe zurück, beweist, dass der Prozess Apache getötet wurde.

Fazit

In diesem Tutorial haben wir etwas über die pkill Befehl und wie er verwendet wird, um den Prozess unter Verwendung des Prozessnamens direkt zu beenden. Wir haben auch etwas über die . erfahren pgrep Befehl, der verwendet wird, um die Prozess-ID des von einem bestimmten Benutzer ausgeführten Prozesses abzurufen. Der pgrep Mit dem Befehl können wir überprüfen, ob der Prozess beendet wurde.