So beenden Sie Prozesse vom Linux-Terminal aus
Die zentralen Thesen
- Das Beenden eines Prozesses bedeutet einfach, ihn zum Beenden zu zwingen, und es kann notwendig sein, wenn ein Prozess nicht reagiert oder sich schlecht verhält.
- Linux und macOS verfügen über Befehle wie kill, pkill und killall, mit denen Sie Prozesse entweder anhand ihrer PID oder ihres Namens beenden können.
- Es ist wichtig, beim Beenden von Prozessen vorsichtig zu sein und sicherzustellen, dass Sie den richtigen Prozess beenden, um unbeabsichtigte Folgen zu vermeiden.
Manchmal ist das Beenden eines Prozesses die einzige Möglichkeit, ihn loszuwerden. Trotz des harten Namens bedeutet „Töten“ eines Prozesses lediglich „das Beenden erzwingen“. Hier erfahren Sie, wie Sie dies über die Linux- oder macOS-Befehlszeile tun.
Was ist ein Prozess?
Das Ausführen von Programmen wie Ihrem Webbrowser, mit Ihrer Desktop-Umgebung verbundenen Hintergrundprozessen und Linux-Systemdiensten sind alles Prozesse.
Sie können Prozesse in zwei Gruppen einteilen:
- Vordergrundprozesse sind solche, die von einem Benutzer gestartet oder gestartet wurden. Sie können sich in einem Terminalfenster befinden oder eine grafische Anwendung sein.
- Hintergrundprozesse sind alle Prozesse, die automatisch gestartet werden und keine Interaktion mit Benutzern haben. Sie erwarten keine Eingaben von Benutzern und präsentieren ihnen auch keine Ergebnisse oder Ausgaben. Hintergrundprozesse sind Dinge wie Dienste und Daemons.
Wenn es sich bei den Vordergrundprozessen um die Front des Theaterpersonals und der Schauspieler handelt, handelt es sich bei den Hintergrundprozessen um das Backstage-Team „hinter den Kulissen“.
Wenn sich Prozesse schlecht verhalten oder nicht funktionieren, können sie zu viel CPU-Zeit beanspruchen, Ihren Arbeitsspeicher verbrauchen oder in eine enge Rechenschleife geraten und nicht mehr reagieren. Grafische Anwendungen können sich weigern, auf Mausklicks zu reagieren. Terminalanwendungen kehren Sie möglicherweise nie zur Eingabeaufforderung zurück.
Was bewirkt das Beenden eines Prozesses?
Das „Töten“ eines Prozesses bedeutet lediglich „das Beenden des Prozesses erzwingen“. Dies kann erforderlich sein, wenn der Prozess eine Antwort verweigert.
Linux bietet die Befehle kill
, pkill
und, killall
mit denen Sie genau das tun können. Diese Befehle können mit jeder Art von Prozess, Grafik oder Befehlszeile, Vordergrund oder Hintergrund verwendet werden.
Der Tötungsbefehl
Um verwenden zu können kill
, müssen Sie die Prozess-ID (PID) des Prozesses kennen, den Sie beenden möchten. Mit dem ps
Befehl kann die PID eines Prozesses ermittelt werden.
Um ps
alle Prozesse zu durchsuchen, verwenden Sie die -e
Option (alle Prozesse). Es empfiehlt sich, den Ausgang durchzuleiten less
, es wird ziemlich viel davon geben. Geben Sie ps
, ein Leerzeichen, -e
, ein Leerzeichen |
(ein Pipe-Zeichen) und ein weiteres Leerzeichen ein und geben Sie dann ein less
. Drücken Sie die Eingabetaste, um den Befehl auszuführen.
ps -e | less
Dadurch erhalten Sie eine Prozessliste, die dem folgenden Screenshot ähnelt. less
Mit der Taste können Sie vorwärts /
und mit der Taste rückwärts suchen ?
.
Um sich auf den Prozess zu konzentrieren, an dem Sie interessiert sind, leiten Sie die Ausgabe von ps
durch weiter grep
und geben Sie den Namen – oder einen Teil des Namens – des Prozesses an.
ps -e | grep shutter
Sobald Sie die PID des Prozesses gefunden haben, den Sie beenden möchten, übergeben Sie sie kill
als Parameter an den Befehl. Um den shutter
durch den vorherigen Befehl identifizierten Prozess zu beenden, verwenden Sie diesen Befehl:
kill 2099
Der kill
Befehl ist ein stiller Attentäter – er gibt Ihnen keine Rückmeldung, ob er erfolgreich war.
Es funktioniert auch genauso, um Prozesse unter macOS zu beenden .
Der pkill-Befehl
Mit dem pkill
Befehl können Sie einen oder mehrere Prozesse namentlich beenden. Sie müssen den Prozess nicht anhand der PID identifizieren. Zur Verwendung pkill
geben Sie einen Suchbegriff ein, mit dem pkill
die Liste der laufenden Prozesse abgeglichen wird. Matching-Prozesse werden beendet. Sie müssen also sicher sein, dass Sie den Suchbegriff richtig geschrieben haben.
Als Sicherheitsnetz können Sie den pgrep
Befehl verwenden, bevor Sie den Befehl verwenden pkill
. Der pgrep
Befehl akzeptiert auch einen Suchbegriff. Es listet die PID jedes Prozesses auf, der dem Suchbegriff entspricht. Dies ist sicher, da pgrep
kein Kill-Signal an die Prozesse gesendet wird und Sie nicht versehentlich einen anderen Prozess beenden, wenn Sie den Suchbegriff falsch eingeben. Sie können sicherstellen, dass Sie den Suchbegriff richtig durchdacht haben, bevor Sie ihn an übergeben pkill
. Beide pkill
behandeln pgrep
den Suchbegriff gleich. Ihre Behandlung ist so ähnlich, dass sie dieselbe Manpage verwenden .
Nehmen wir an, es gibt einen Prozess mit „subq“ im Namen. ps -u dave | grep
Mit dem Befehl werfen wir einen Blick hinter die Kulissen. Sie können sehen, dass „subq“ mit diesem Prozess und nur mit diesem Prozess übereinstimmt. Das war nur, damit Sie den vollständigen Namen des Prozesses sehen können.
ps -u dave | grep subq
Nehmen wir an, unser Benutzer hat das nicht getan; Sie wissen lediglich, dass der Prozessname die Teilzeichenfolge „subq“ enthält. Sie überprüfen pgrep
damit, ob es nur eine Übereinstimmung mit dem Suchbegriff gibt. Anschließend verwenden sie diesen Suchbegriff mit pkill
.
pgrep subq
pkill subq
Sie können pkill
mehrere Prozesse gleichzeitig beenden. Hier führt der Benutzer aus pgrep
, um zu überprüfen, wie viele Prozesse Chrome gestartet hat. Sie pkill
töten sie alle. Anschließend wird überprüft, pgrep
ob alle entfernt wurden.
pgrep chrome
pkill chrome
pgrep chrome
Wenn mehrere Prozesse mit demselben Namen laufen, Sie aber nicht alle beenden möchten, können Sie pgrep
mit der -f
Option (Befehlszeile) ermitteln, um welchen Prozess es sich handelt. Ein einfaches Beispiel wären zwei ping
Prozesse. Du willst einen von ihnen töten, den anderen aber nicht. Sie können ihre Befehlszeilen verwenden, um sie zu unterscheiden. Beachten Sie die Verwendung von Anführungszeichen zum Umschließen des Befehlszeilenparameters.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
Das Killall-Kommando
Warnung : In den Betriebssystemen Solaris und OpenIndiana killall
beendet der Befehl alle Prozesse, die Ihnen gehören. Wenn Sie Root-Benutzer sind oder ein Problem haben, sudo killall
starten Sie Ihren Computer neu! Während der Recherche für diesen Artikel wurde dieses Verhalten mit der neuesten Version von OpenIndiana Hipster 2018.10 bestätigt.
Der killall
Befehl funktioniert auf ähnliche Weise wie der pkill
Befehl, jedoch mit einem spezifischen Unterschied. Anstatt einen Suchbegriff an den Befehl zu übergeben, müssen Sie den genauen Prozessnamen angeben.
Sie können keine teilweise Übereinstimmung mit einem Prozessnamen angeben; Sie müssen den gesamten Prozessnamen angeben, wie gezeigt:
killall shutt
killall shutter
Mit der -y
Option (jünger als) können Sie Prozesse beenden, die seit weniger als einem bestimmten Zeitraum ausgeführt werden. Der Zeitraum wird in Zahlen angegeben, gefolgt von einer dieser Einheiten:
- s (Sekunden)
- m (Minuten)
- h (Stunden)
- d (Tage)
- w (Wochen)
- M (Monate, Notiz, Großbuchstabe „M“)
- y (Jahre)
Um einen aufgerufenen Prozess zu beenden ana
, der gerade gestartet wurde, und alle älteren Instanzen ana
laufen zu lassen, könnten Sie die folgenden Parameter mit verwenden killall
, wenn Sie innerhalb von zwei Minuten reagiert hätten:
killall -y 2m ana
Mit der -o
Option (älter als) können Sie Prozesse beenden, die länger als einen bestimmten Zeitraum ausgeführt wurden. Dieser Befehl beendet alle ssh
Verbindungen, die länger als einen Tag laufen:
killall -o 1d sshd
Können Sie jeden Prozess beenden?
Mit diesen Befehlen können Sie fehlerhafte Prozesse präzise und sicher identifizieren und korrekt beenden. Allerdings kann es sein, dass Sie zu sehr überglücklich sind und es durchaus möglich ist, einen Prozess abzubrechen, den Sie nicht sollten.
Seien Sie immer vorsichtig. Stellen Sie zunächst sicher, dass der Prozess, den Sie beenden möchten, wirklich der gewünschte ist. Zweitens: Überprüfen Sie noch einmal: Seien Sie vorsichtig und stellen Sie sicher, dass der Zielprozess derjenige ist, den Sie beenden möchten. Fahren Sie mit dem Beenden des Vorgangs fort, sobald Sie zufrieden sind.
Wenn Sie einen Prozess versehentlich beenden, ist das nicht das Ende der Welt. Das wahrscheinlichste Ergebnis ist, dass etwas fehlerhaft wird und Sie Ihren PC neu starten müssen. Andernfalls gehen möglicherweise Arbeiten verloren, die Sie in dem Programm durchgeführt haben, das mit dem von Ihnen beendeten Prozess verknüpft ist.
Linux-Befehle |
|
Dateien |
tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · Join · jq · Fold · Uniq · Journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konvertieren · rclone · shred · srm · scp · gzip · chattr · schneiden · finden · umask · wc · tr |
Prozesse |
alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · geschichte · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · Timeout · Wall · Yes · Kill · Sleep · Sudo · Su · Time · Groupadd · Usermod · Groups · LSHW · Shutdown · Reboot · Halt · Poweroff · Passwd · LSCPU · Crontab · Date · BG · FG · PIDOF · Nohup · PMAP |
Vernetzung |
netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
Schreibe einen Kommentar