So beenden Sie Prozesse vom Linux-Terminal aus

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, pkillund, killallmit 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 psBefehl kann die PID eines Prozesses ermittelt werden.

Um psalle Prozesse zu durchsuchen, verwenden Sie die -eOption (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

ps-Befehl in einem Terminalfenster

Dadurch erhalten Sie eine Prozessliste, die dem folgenden Screenshot ähnelt. lessMit der Taste können Sie vorwärts /und mit der Taste rückwärts suchen ?.

Ausgabe von ps in einem Less-Fenster

Um sich auf den Prozess zu konzentrieren, an dem Sie interessiert sind, leiten Sie die Ausgabe von psdurch weiter grepund geben Sie den Namen – oder einen Teil des Namens – des Prozesses an.

ps -e | grep shutter

Der Befehl ps wurde über grep weitergeleitet, um den Verschlussprozess zu finden

Sobald Sie die PID des Prozesses gefunden haben, den Sie beenden möchten, übergeben Sie sie killals Parameter an den Befehl. Um den shutterdurch den vorherigen Befehl identifizierten Prozess zu beenden, verwenden Sie diesen Befehl:

kill 2099

kill-Befehl in einem Terminalfenster

Der killBefehl 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 pkillBefehl können Sie einen oder mehrere Prozesse namentlich beenden. Sie müssen den Prozess nicht anhand der PID identifizieren. Zur Verwendung pkillgeben Sie einen Suchbegriff ein, mit dem pkilldie 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 pgrepBefehl verwenden, bevor Sie den Befehl verwenden pkill. Der pgrepBefehl akzeptiert auch einen Suchbegriff. Es listet die PID jedes Prozesses auf, der dem Suchbegriff entspricht. Dies ist sicher, da pgrepkein 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 pkillbehandeln pgrepden 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 | grepMit 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

ps-Befehl in einem Terminalfenster

Nehmen wir an, unser Benutzer hat das nicht getan; Sie wissen lediglich, dass der Prozessname die Teilzeichenfolge „subq“ enthält. Sie überprüfen pgrepdamit, ob es nur eine Übereinstimmung mit dem Suchbegriff gibt. Anschließend verwenden sie diesen Suchbegriff mit pkill.

pgrep subq pkill subq

pgrep und pkill in einem Terminalfenster

Sie können pkillmehrere Prozesse gleichzeitig beenden. Hier führt der Benutzer aus pgrep, um zu überprüfen, wie viele Prozesse Chrome gestartet hat. Sie pkilltöten sie alle. Anschließend wird überprüft, pgrepob alle entfernt wurden.

pgrep chrome pkill chrome pgrep chrome

pgrep und pkill in einem Terminalfenster

Wenn mehrere Prozesse mit demselben Namen laufen, Sie aber nicht alle beenden möchten, können Sie pgrepmit der -fOption (Befehlszeile) ermitteln, um welchen Prozess es sich handelt. Ein einfaches Beispiel wären zwei pingProzesse. 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"

pgrep pkill mit Ping-Befehlszeile

Das Killall-Kommando

Warnung : In den Betriebssystemen Solaris und OpenIndiana killallbeendet der Befehl alle Prozesse, die Ihnen gehören. Wenn Sie Root-Benutzer sind oder ein Problem haben, sudo killallstarten 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 killallBefehl funktioniert auf ähnliche Weise wie der pkillBefehl, 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

killall-Befehl in einem Terminalfenster

Mit der -yOption (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 analaufen zu lassen, könnten Sie die folgenden Parameter mit verwenden killall, wenn Sie innerhalb von zwei Minuten reagiert hätten:

killall -y 2m ana

killall mit der Option „Jünger als“.

Mit der -oOption (älter als) können Sie Prozesse beenden, die länger als einen bestimmten Zeitraum ausgeführt wurden. Dieser Befehl beendet alle sshVerbindungen, die länger als einen Tag laufen:

killall -o 1d sshd

killall-Befehl in einem Terminalfenster

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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert