Wie zu töten python-Skript mit der bash-Skript
Führe ich ein bash-Skript, mit dem starten eines python-Skript im hintergrund laufen,
#!/bin/bash
python test.py &
So, wie ich kann, töte ich das Skript mit der bash-Skript auch?
Ich verwenden den folgenden Befehl, um zu töten, aber die Ausgabe no process found
killall $(ps aux | grep test.py | grep -v grep | awk '{ print $1 }')
Probiere ich die Laufenden Prozesse nach ps aux | less
und festgestellt, dass das script läuft unter Befehl von python test.py
Bitte helfen, danke!
- haben Sie das Schlüsselwort "test.py die in-process-info, indem Sie
ps
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
pkill
Befehl als(oder) eine weitere todsichere Weg, mit
pgrep
zu suchen für die eigentlichen Prozess-idKönnen Sie die
!
um die PID des letzten Befehls.Ich würde vorschlagen, etwas ähnliches wie den folgenden, der auch prüfen, ob der Prozess, den Sie ausführen möchten, ist bereits ausgeführt:
Dann, wenn Sie wollen, es zu töten:
Natürlich, wenn das töten muss stattfinden, einige Zeit, nachdem der Befehl gestartet wurde, können Sie alles in ein und demselben Skript:
Wenn Sie wollen in der Lage sein, mehr Befehl mit dem gleichen Namen gleichzeitig und in der Lage sein, um Sie zu töten selektiv, eine kleine änderung des Skriptes benötigt wird. Sagen Sie mir, ich werde versuchen, Ihnen zu helfen!
Mit so etwas wie diesem sind Sie sicher, dass Sie töten, was Sie wollen, Sie zu töten. Befehle wie
pkill
oder grepping dieps aux
kann riskant sein.wird es wieder die "pid" dann kill den Prozess, durch
z.B. die Ausgabe des ps-Befehls:
Benutzer 13035 4729 0 13:44 pts/10 00:00:00 python (hier 13035 ist pid)
kill -9
Befehl hat ein anderes Verhalten als vonkill
. Achten Sie bei der Verwendung der-9
option.Mit der Verwendung von bashisms.
$!
ist die PID des zuletzt gestarteten Prozesses im hintergrund. Sie können auch speichern Sie es in einer anderen variable, wenn Sie beginnen, mehrere Skripte im hintergrund.