Bei der Arbeit auf einem Linux-Computer werden Sie manchmal feststellen, dass eine Anwendung oder ein Befehlszeilenprozess hängen bleibt (nicht mehr reagiert). Dann ist in diesen Fällen die Kündigung der einzige Ausweg. Die Linux-Befehlszeile bietet ein Dienstprogramm, das Sie in diesen Szenarien verwenden können. Es heißt töten .
In diesem Tutorial werden wir die Grundlagen von kill anhand einiger leicht verständlicher Beispiele besprechen. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele in diesem Artikel auf einem Ubuntu 16.04-Rechner getestet wurden.
Linux-Kill-Befehl
Der Kill-Befehl wird normalerweise verwendet, um einen Prozess zu beenden. Intern sendet es ein Signal, und je nachdem, was Sie tun möchten, gibt es verschiedene Signale, die Sie mit diesem Tool senden können. Es folgt die Syntax des Befehls:
kill [options] <pid> [...]
Und so beschreibt es die Manpage des Tools:
The default signal for kill is TERM. Use -l or -L to list available signals. Particularly usefulan
signals include HUP, INT, KILL, STOP, CONT, and 0. Alternate signals may be specified in three ways:
-9, -SIGKILL or -KILL. Negative PID values may be used to choose whole process groups; see the PGID
column in ps command output. A PID of -1 is special; it indicates all processes except the kill
process itself and init.
Die folgenden Beispiele im Q&A-Stil sollen Ihnen eine bessere Vorstellung davon vermitteln, wie der Kill-Befehl funktioniert.
Q1. Wie beendet man einen Prozess mit dem Kill-Befehl?
Das ist sehr einfach - alles, was Sie tun müssen, ist, die PID des Prozesses zu bekommen, den Sie beenden möchten, und sie dann an den Kill-Befehl weiterzugeben.
kill [pid]
Zum Beispiel wollte ich den „gthumb“-Prozess auf meinem System beenden. Also habe ich zuerst den Befehl ps verwendet, um die PID der Anwendung abzurufen, und sie dann an den Befehl kill übergeben, um sie zu beenden. Hier ist der Screenshot, der das alles zeigt:
Q2. Wie sende ich ein benutzerdefiniertes Signal?
Wie bereits im Einführungsabschnitt erwähnt, ist TERM das Standardsignal, das kill an die betreffende Anwendung/den betreffenden Prozess sendet. Wenn Sie möchten, können Sie jedoch mit dem -s jedes andere Signal senden, das Supports tötet Befehlszeilenoption.
kill -s [signal] [pid]
Wenn zum Beispiel ein Prozess nicht auf das TERM-Signal antwortet (das dem Prozess erlaubt, vor dem Beenden eine abschließende Bereinigung durchzuführen), können Sie das KILL-Signal wählen (das den Prozess keine Bereinigung durchführt). Das Folgende ist der Befehl, den Sie in diesem Fall ausführen müssen.
kill -s KILL [pid]
Q3. Was für Signale kann man mit kill senden?
Natürlich ist die nächste logische Frage, die Ihnen in den Sinn kommt, wie Sie wissen, welche Signale Sie mit kill senden können. Nun, zum Glück gibt es eine Befehlszeilenoption -l das alle unterstützten Signale auflistet.
kill -l
Es folgt die Ausgabe, die der obige Befehl auf unserem System erzeugt:
Q4. Auf welche anderen Arten kann das Signal gesendet werden?
In einem der vorherigen Beispiele haben wir Ihnen gesagt, wenn Sie das KILL-Signal senden möchten, können Sie dies auf folgende Weise tun:
kill -s KILL [pid]
Es gibt jedoch auch ein paar andere Alternativen:
kill -s SIGKILL [pid]
kill -s 9 [pid]
Die entsprechende Nummer kann mit der Option -l ermittelt werden, die wir bereits im vorherigen Beispiel besprochen haben.
Q5. Wie kann man alle laufenden Prozesse auf einmal beenden?
Falls ein Benutzer alle Prozesse beenden möchte, die er kann (dies hängt von seiner Berechtigungsebene ab), kann er, anstatt eine große Anzahl von Prozess-IDs anzugeben, einfach die Option -1 zum Beenden übergeben.
Zum Beispiel:
kill -s KILL -1
Schlussfolgerung
Der Kill-Befehl ist ziemlich einfach zu verstehen und zu verwenden. Es gibt eine leichte Lernkurve in Bezug auf die Liste der angebotenen Signaloptionen, aber wie wir hier erklärt haben, gibt es eine Option, um auch einen kurzen Blick auf diese Liste zu werfen. Üben Sie einfach, was wir besprochen haben, und Sie sollten bereit sein. Weitere Informationen finden Sie auf der Manpage des Tools.