Töte den Prozess mit seinem Namen in linux (Python)
dies funktioniert, aber es tötet jedes Python-Prozess.
pkill python
Aber ich kann nicht:
pkill myscript.py
Habe ich auch schon versucht killall, aber mit kein Glück entweder.
Muss ich die Benutzer reguläre Ausdrücke?
Durch die Art und Weise, die ich tun möchte, in einem python-Skript mit import os.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben, starten Sie den Python-subprocess aus dem gleichen Skript, das Sie töten es aus? Wenn dem so ist, sehen diese Frage für details. Wenn nicht, können Sie
pkill
's-f-option, um nach dem script Namen in der Python-Prozess Liste von Argumenten, aber Sie immer noch Gefahr laufen, zu töten etwas, das Sie nicht wollen. Finden Sie die Mann Seite für mehr info.Sind Sie in der Lage, den Prozess zu schreiben, es ist
pid
zu einer Datei?In Python Sie erhalten die pid, wie diese:
Tötung durch name ist bequem, aber manchmal hat unerwünschte Folgen, wie Sie gesehen haben.
kill 'cat pid'
mit backticks anstelle von'
sudo kill -9 `pgrep python`
Dieser Befehl wird alle töten den Laufenden python-Prozesse
müssen Sie lookup die Prozess-id (pid). Sie können mit dem Befehl "ps-A | grep NAME" und wenden Sie dann "kill -9 PID". Diese Befehle können leicht übersetzt werden zu python.
Versucht, einen "Namen" (wie in pkill) ergeben können mehrere Spiele und somit unerwartete Ergebnisse (zumindest in dem Kontext oben in der Frage).
pkill
?Versuchen Sie dies:
Natürlich haben Sie den code ändern, um zu töten, ein Prozess namens "myscript"
Auf UNIX-Systemen, die eine ausführbare Datei enthält ein paar bytes am Anfang, die sagen, das OS was binäre format verwendet wird. Wenn die ersten zwei bytes sind
#!
dann das OS wird davon ausgegangen, dass dies ist eigentlich eine Textdatei, die ausgeführt werden kann von einem anderen Programm, und das OS lädt das Programm und geht es, der text-Datei.In diesem Fall, ich hätte wahrscheinlich geschrieben haben
#!/usr/bin/python
auf der oberen Linie, aber wenn Ihr python ist in/usr/local/bin
, dann würde es nicht funktionieren. Stattdessen habe ich leverageenv
bekommen Sie die Suche Ihren normalen Pfad für python. Alle UNIX-Systeme haben, env in /usr/bin. Für ein bisschen mehr info geben Sie inman env
.