Der Befehl kill sendet ein Signal an einen Prozess oder eine Prozessgruppe. Sein Name ist historisch bedingt: Das angeforderte Signal kann beenden, anhalten, fortsetzen oder eine anwendungsspezifische Aktion anstoßen. Bestätige immer das genaue Ziel und verstehe das dokumentierte Signalverhalten des Programms, bevor du ein Signal sendest.
Prozesse · Lektion 7
kill (Beenden)
Erfahre, wie du einen Prozess identifizierst und mit `kill` in einer sicheren Eskalationsreihenfolge ein geeignetes Signal sendest.
Eine geordnete Beendigung anfordern
Mit nur einer PID sendet kill standardmäßig SIGTERM:
$ kill 12445
Bevorzuge den symbolischen Namen, wenn du ein Signal ausdrücklich angibst:
$ kill -TERM 12445
Die Standardaktion von SIGTERM ist die Beendigung, doch ein Programm kann das Signal abfangen oder ignorieren. Ein gut entwickelter Dienst kann einen Handler verwenden, um keine neue Arbeit mehr anzunehmen, geeigneten Zustand zu speichern und Anwendungsressourcen freizugeben. Das ist eine Möglichkeit und keine Garantie für sofortige oder erfolgreiche Bereinigung.
Welches Signal fordert kill PID standardmäßig an?
Das Ziel überprüfen
PIDs können wiederverwendet werden, sodass eine veraltete PID später einen anderen Prozess kennzeichnen kann. Prüfe das laufende Ziel unmittelbar vor der Aktion:
$ ps -p 12445 -o pid,ppid,user,lstart,stat,cmd
Prüfe Benutzer, Startzeit, Befehl, Elternprozess, Dienstzugehörigkeit und betriebliche Aufgabe. Wenn ein Dienstmanager den Prozess verwaltet, verwende nach Möglichkeit dessen Stopp- oder Neuladebefehl, damit er den richtigen Zustand beibehält und den Kindprozess nicht sofort neu startet.
Du darfst vorbehaltlich der Regeln für Zugangsdaten Prozesse signalisieren, die dir gehören. Das Signalisieren des Prozesses eines anderen Benutzers erfordert gewöhnlich entsprechende Privilegien. Verwende keinen weit gefassten namensbasierten Befehl, bevor du jede Übereinstimmung geprüft hast.
Warum solltest du eine PID unmittelbar vor dem Senden eines Signals prüfen?
Signalberechtigung mit Signal null prüfen
Die Signalnummer null führt Fehlerprüfungen durch, ohne ein echtes Signal zuzustellen:
$ kill -0 12445
Ein erfolgreiches Ergebnis bedeutet, dass in diesem Augenblick ein Prozess mit dieser PID existiert und der Aufrufer ihm ein Signal senden darf. Ein Fehler ist mehrdeutig: Der Prozess ist möglicherweise nicht vorhanden oder dem Aufrufer fehlt die Berechtigung. Prüfe die Fehlermeldung und den Beendigungsstatus, statt jeden Fehler als „läuft nicht“ zu deuten. Außerdem ist dies nur eine Momentaufnahme und kann ein späteres Rennen durch PID-Wiederverwendung nicht ausschließen.
Was bestätigt ein erfolgreiches kill -0 PID in diesem Augenblick?
Nur bei Bedarf eskalieren
Wenn sich ein autorisiertes Ziel nach SIGTERM nicht beendet, warte eine der Arbeitslast angemessene Zeitspanne und untersuche den Grund. Wenn eine erzwungene Beendigung anschließend gerechtfertigt ist, sende:
$ kill -KILL 12445
SIGKILL kann weder abgefangen noch ignoriert oder blockiert werden. Das Programm kann daher keine Bereinigung auf Anwendungsebene durchführen. Es kann unvollständige Transaktionen, temporären Zustand oder Wiederherstellungsarbeit für andere Komponenten hinterlassen. Verwende es als Eskalation und nicht routinemäßig als ersten Schritt.
Andere Signale sind nur gemäß dem Vertrag des empfangenden Programms sinnvoll. SIGHUP fordert häufig das Neuladen der Konfiguration an, doch einige Programme behalten seine standardmäßige Beendigungswirkung bei. SIGSTOP hält ohne Bereinigung an und SIGCONT setzt einen angehaltenen Prozess fort.
Was ist der wichtigste betriebliche Nachteil von SIGKILL?
Übe die Signalauswahl ausschließlich an Prozessen, die du selbst in einer isolierten Umgebung gestartet hast. Das Lab Linux-Prozesse verwalten und überwachen bietet einen kontrollierten Arbeitsablauf für Prüfung und Beendigung.
Lektion abgeschlossen
Sie haben kill (Beenden) abgeschlossen
Du kannst nun Prozesssignale in einem bewussten, überprüfbaren Arbeitsablauf senden.
Bestätige das laufende Ziel und seinen Supervisor, bevor du handelst.
Verwende
SIGTERMals normale Beendigungsanforderung.Interpretiere Signal null als momentane Existenz- und Berechtigungsprüfung.
Reserviere
SIGKILLfür eine gerechtfertigte Eskalation nach einer Untersuchung.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen