HOWTO · Python

So beenden Sie einen Python-Prozess

Erfahren Sie, wie Sie einen Python-Prozess mit Strg+C, einer überprüften Prozess-ID oder Befehlen zum Abgleich von Prozessnamen stoppen.

Auf dieser Seite

Um ein Python-Programm zu stoppen, drücken Sie zunächst STRG+C in dem Terminal oder der IDE, in dem bzw. der es läuft. Hält das Vordergrundprogramm dadurch nicht an, ermitteln Sie seine Prozess-ID und verwenden Sie kill für einen überprüften Prozess. Verwenden Sie killall oder pkill nur, wenn Sie jeden übereinstimmenden Prozess treffen wollen; ihre Verfügbarkeit und ihre Abgleichsregeln hängen vom Betriebssystem ab.

Einen Python-Prozess mit einer Tastenkombination beenden

Klicken Sie auf das Terminal oder die IDE, in dem bzw. der das Programm läuft, und drücken Sie STRG+C. Dadurch wird ein Interrupt an das Vordergrundprogramm gesendet. Python reagiert üblicherweise, indem es KeyboardInterrupt auslöst und anhält, aber ein Programm kann den Interrupt behandeln oder sich in Code befinden, der nicht prompt reagiert. Sichern Sie Ihre Arbeit zuerst, falls das Programm möglicherweise Dateien schreibt oder Daten aktualisiert.

Läuft das Programm weiter, ermitteln Sie über das Terminal seinen Prozess und wählen Sie unten eine Befehlszeilenmethode. Ein Prozess kann ein Terminierungssignal auch behandeln oder aufschieben; eine erzwungene Terminierung ist eine gesonderte Eskalation und kann ungesicherte Daten kosten.

Einen Python-Prozess mit dem Prozessnamen und dem Befehl kill beenden

Der Befehl kill zielt auf eine Prozess-ID (PID), nicht auf einen Prozessnamen. Prüfen Sie unter Linux die Prozessliste mit ps -eo pid,comm,args und suchen Sie die Zeile, deren Befehl und Argumente das Python-Programm identifizieren, das Sie stoppen wollen. Übernehmen Sie keine PID aus einem alten Screenshot und nehmen Sie nicht an, dass jede Zeile mit „python“ das richtige Ziel ist. PIDs können wiederverwendet werden, also überprüfen Sie den Kandidaten unmittelbar, bevor Sie ein Signal senden.

In Bash verwendet diese kleine Prüfung die aktuelle Shell als bekannten Prozess und bestätigt, dass ihre PID erreichbar ist:

pid=$$
if kill -0 "$pid" 2>/dev/null; then
    printf 'The selected PID is available.\n'
else
    printf 'The selected PID is unavailable.\n'
fi
The selected PID is available.

Die Prüfung lief erfolgreich und gab die oben gezeigte Verfügbarkeitsmeldung aus. kill -0 prüft, ob ein Prozess existiert und ob Sie ihm ein Signal senden können; es verifiziert nicht, dass der Prozess zu Python gehört. Ersetzen Sie die Shell-PID durch einen von Ihnen ermittelten Kandidaten und prüfen Sie die Prozessliste erneut, bevor Sie handeln.

Auf Unix-ähnlichen Systemen sendet kill PID standardmäßig SIGTERM, das den Prozess auffordert zu terminieren und ihm Gelegenheit gibt aufzuräumen. Verwenden Sie zum Beispiel, nachdem Sie PID durch die überprüfte Nummer ersetzt haben, kill -TERM PID. Prüfen Sie die Prozessliste erneut, um zu sehen, ob der Prozess angehalten hat. Läuft er weiter, klären Sie den Grund, bevor Sie ein stärkeres Signal erwägen; behandeln Sie kill -9 nicht als routinemäßigen ersten Schritt.

Einen Python-Prozess mit dem Prozessnamen und dem Befehl killall beenden

killall wählt Prozesse nach ihrem Namen aus, sodass ein breiter Name wie python mehr als das eine Skript treffen kann, das Sie stoppen wollten. Überprüfen Sie die Treffer mit den auf Ihrem System verfügbaren Werkzeugen zur Prozessauflistung und engen Sie den Namen nach Möglichkeit ein. Führen Sie killall python nur aus, wenn Sie alle von diesem lokalen Befehl erfassten Prozesse stoppen wollen.

Der Befehl ist nicht überall verfügbar, und die Implementierungen unterscheiden sich zwischen Unix-ähnlichen Systemen. Konsultieren Sie die lokale Manpage von killall, bevor Sie sich auf seinen Namensabgleich oder seine Signaloptionen verlassen. Auf manchen Systemen verhält er sich anders als der unter Linux übliche Befehl zum Terminieren von Prozessen.

Einen Python-Prozess mit dem Prozessnamen und dem Befehl pkill beenden

Auch pkill wählt Prozesse nach ihrem Namen aus und kann mehrere Treffer signalisieren. Sein Muster und seine Optionen variieren je nach Implementierung. Prüfen Sie die Kandidatenprozesse zuerst; auf Systemen, die es unterstützen, kann pgrep -a python übereinstimmende PIDs und Befehlszeilen anzeigen. Wählen Sie ein spezifischeres Muster oder einen anderen unterstützten Selektor, falls die Liste fremde Programme enthält.

Wenn die Treffer genau die Prozesse sind, die Sie stoppen wollen, sendet pkill -TERM -f 'your-specific-script.py' auf Implementierungen, die -f unterstützen, SIGTERM an Prozesse, deren vollständige Befehlszeile mit diesem Muster übereinstimmt. Behandeln Sie das Muster als Selektor, nicht als Garantie für genau einen Treffer, und konsultieren Sie man pkill auf dem Zielsystem. Verwenden Sie eine PID mit kill, wenn Sie einen einzelnen überprüften Prozess treffen müssen.

Fazit

Verwenden Sie Strg+C für ein Python-Programm an Ihrem Terminal, kill mit einer frisch überprüften Prozess-ID für einen bestimmten Prozess und killall oder pkill nur, wenn alle ausgewählten Namenstreffer beabsichtigte Ziele sind. Prüfen Sie die lokale Dokumentation des Befehls und bestätigen Sie das Ergebnis. Ein Terminierungssignal fordert einen Prozess auf anzuhalten; es garantiert weder eine sofortige Terminierung noch den Erhalt von Arbeit, die das Programm nicht gespeichert hat.