Einen Prozess töten
Um einen Prozess zu töten, verwenden wir eine Handvoll Werkzeuge: töten, Pkill, Und alle töten. Alle von ihnen arbeiten im Grunde genommen genauso.
Diese Tools beenden den Prozess nicht selbst. Stattdessen senden sie ein bestimmtes Signal an die Zielprozess- oder Prozessgruppen. Wenn Sie kein bestimmtes Signal angegeben haben, wird Sigterm als Standardsignal gesendet. Es gibt jedoch eine Reihe von unterstützten Signalen, zum Beispiel Sigkill, Seufzer usw.
Hier ist die grundlegende Befehlsstruktur für töten, Pkill Und alle töten.
$ Kill
$ pkill
$ Killall
Wann immer möglich, wird empfohlen, die Verwendung zu verwenden töten.
Töten, Pkill Und alle töten Standorte
Kill ist der Standardbefehl zur Beendigung eines Prozesses.
$ Kill -Help
Es wird aus dem Verzeichnis /USR /Bin ausgeführt.
$ was tötet
Der Vorteil ist, er ermöglicht auch den Zugriff auf PKILL, ein weiterer Befehl, der dem Kill ähnelt, der den Abschlussprozess basierend auf ihrem Namen ermöglicht.
$ pkill -HELP
$ welche pkill
Einige Apps führen mehrere Prozesse derselben ausführbaren Datei aus. Wenn Sie eine Reihe von Prozessen mit demselben Namen beenden möchten, verwenden Sie das Killall -Tool.
$ Killall -HELP
$ was Killall
Auflistung aller laufenden Prozesse
Die allererste Aufgabe ist die Identifizierung der PID (Prozessidentifikationsnummer) und/oder des Prozessnamens, den Sie beenden möchten. In diesem Beispiel werde ich Firefox als Zielprozess zum Beenden verwenden. Führen Sie den folgenden Befehl aus, um alle laufenden Prozesse auf dem System aufzulisten.
$ ps -a
Für die meisten Aufgaben müssen wir die PID des Zielprozesses kennenlernen. In bestimmten Situationen ist die Verwendung des Prozessnamens jedoch besser geeignet.
Wenn Sie den genauen Namen des Zielprozesses kennen, können Sie die PID direkt mithilfe der PID erhalten PIDOF.
$ pidof
Ein weiteres interessantes Tool, um die Informationen zum Zielprozess zu erfassen, ist PGREP. Es wurde speziell für den Zweck entwickelt.
$ pGrep
Signale töten
Schauen wir uns nun die Signale an, die die Kill -Tools unterstützen. Es ist eine riesige Liste. Natürlich sind nicht alle für jede einzelne Situation notwendig. Tatsächlich erfordern die meisten Situationen nur eine Handvoll Signale.
Schauen wir uns zunächst einen Blick auf die Liste, die Kill -Unterstützung unterstützt.
$ Kill -l
Es gibt zwei Möglichkeiten, um zu definieren, welches Signal Sie senden möchten. Sie können entweder den vollständigen Signalnamen oder seinen äquivalenten Wert verwenden.
$ Kill -
Oder,
$ Kill -
Die beliebtesten Signale sind Seufzer (1), Sigkill (9) und Sigterm (15). Im Allgemeinen ist Sigterm die Standard- und sicherste Möglichkeit, einen Zielprozess zu beenden.
Im Fall von PKILL ist das unterstützte Signal das gleiche wie Kill. Im Fall von Killall sind die Anzahl der unterstützten Signale und die Signalnamen jedoch unterschiedlich.
$ Killall -l
Einen Prozess töten
Um einen Prozess abzutöten, brauchen wir die PID dieses Zielprozesses. Unter der Annahme, dass Sie die PID haben, führen Sie den folgenden Befehl aus, um sie zu töten.
$ Kill
Hier sendet Kill das Standardsignal sigterm an die PID (en). Wenn Sie mehrere Prozesse beenden möchten, erwähnen Sie alle PIDs, die durch den Raum getrennt sind.
$ Kill
Lassen Sie uns angeben, welches Signal Sie an das Ziel senden möchten.
Möchte einen Prozess nur mit seinem Namen beenden? Verwenden Sie Pkill.
$ pkill
In einigen Fällen kann eine bestimmte Anwendung zu viele Prozesse ausgeführt werden. Es ist zeitaufwändig und lästig, all diese PIDs zu tippen. In solchen Szenarien werden wir das Killall -Tool verwenden. Es ist Kill ziemlich ähnlich, aber es funktioniert mit dem Prozessnamen.
$ Killall
Zum Beispiel beim Ausführen von Firefox startet es eine Handvoll Prozesse. Um alle gleichzeitig zu töten, führen Sie diesen Befehl aus.
$ Killall Firefox
Sie möchten alle Prozesse kündigen, die unter einem bestimmten Benutzer ausgeführt werden? Killall kann den Job machen, kein Problem. Seien Sie vorsichtig, wenn Sie dieses ausführen, da es das System aufschlüsseln und andere Probleme erstellen kann. Es funktioniert nicht, wenn Sie versuchen, Prozesse zu beenden, die unter einem anderen Benutzer mit höheren Berechtigungen ausgeführt werden.
$ Killall -U
Erlaubniskonflikt
Die inhärenten Eigenschaften der Linux -Benutzerhierarchie gelten auch, wenn Sie eine Anwendung beenden. Ein Benutzer kann keine Prozesse beenden, die mit höheren Berechtigungen ausgeführt werden, nur ein Prozesse mit gleichem/niedrigerem Privileg. Darüber hinaus kann ein Benutzer Prozesse, die unter einem anderen Benutzer ausgeführt werden, nicht manipulieren.
Betrachten wir zum Beispiel den Befehl yes. Wenn es als aktueller Benutzer bezeichnet wird, kann es einfach mit Kill beendet werden.
$ Kill Ja
Was wäre jetzt, wenn Ja lief unter Wurzel? Rufen Sie Kill als aktueller Benutzer nicht zusammen.
Wenn ein Prozess unter einem anderen Benutzer ausgeführt wurde, können Sie ihn in ähnlicher Weise nicht von einem anderen Benutzerkonto enden.
Abschließende Gedanken
In diesem Artikel wurden nur die Grundlagen und die gemeinsame Verwendung dieser Befehle vorgestellt. Diese Kill -Tools sind zu mehr als das in der Lage. Um über die Fähigkeiten eines beliebigen Tools eingehalten zu haben, empfehle ich, die Mannseite zu überprüfen.
$ MAN KILL
$ MAN PKILL
Genießen!