Wie kann ich den Prozess mit dem Programmnamen statt mit der PID beenden?

Wie kann ich den Prozess mit dem Programmnamen statt mit der PID beenden?

Ich habe mein Python-Programm im Hintergrund nohupwie unten beschrieben gestartet -

nohup zook.py &

Jetzt versuche ich, diesen Prozess zu beenden, also habe ich den psunten angegebenen Befehl ausgeführt.

root@phxdbx1145:/home/david/zook# ps ax | grep zook.py
16352 pts/6    S+     0:00 grep --color=auto zook.py

Aber irgendwie wird jedes Mal die PID geändert, ich weiß nicht warum. Immer wenn ich das so mache -

kill -9 16352

Es heißt immer: No Such Process.

Und wenn ich den px-Befehl erneut ausführe, sehe ich, dass die PID automatisch geändert wurde.

Ich bin also nicht sicher, wie ich diesen Prozess beenden kann.

Gibt es eine Möglichkeit, den Prozess mit dem Namen irgendwie zu beenden?

Ich habe es versucht mit

killall zook.py

aber es funktioniert bei mir nicht und ich bekomme -

zook.py: no process found

Gibt es noch eine andere Möglichkeit? Irgendwie wird jedes Mal die PID geändert. Ich kann sie also nicht verwenden.kill -9 pid

AKTUALISIEREN:-

Das ist, was ich bekomme. Ich habe es getan pkill -9 zook.pyund dann den PS-Befehl wie unten beschrieben ausgeführt und es wird ständig zook.py angezeigt?

root@dbx1145:/home/david/zook# pkill -9 zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23870 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23872 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23874 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23876 pts/6    S+     0:00 grep --color=auto zook.py

Antwort1

Wenn Sie sich ansehen, was rechts von dieser PID steht, bemerken Sie vielleicht, dass es sich um die PID von grep handelt, das nach Ihrem Suchbegriff sucht. Deshalb ist sie jedes Mal anders. Wenn Sie Ihre Shell von grep zurückerhalten, ist grep natürlich weg.

Sie finden Ihren Prozess unter einem anderen Namen, wenn er noch läuft. Versuchen Sie es ps ax | grep pythonstattdessen oder noch besser, pgrep pythonwenn Sie es haben.

Antwort2

Um das Grep für den Prozess durchzuführen, können Sie verwenden

ps ax|grep name|grep -v grep

dadurch werden die Grep-Befehle entfernt; wenn Ihr Skriptname jedoch nicht angezeigt wird, müssen Sie wahrscheinlich „ps axw“ ausführen, um eine längere Befehlszeile zu erhalten.

ps axww|grep name|grep -v grep

verwandte Informationen