Python Script beenden ?

  • Hallo,

    also wahrscheinlich ist die Lösung auf die Frage recht einfach, aber beim Suchen fand ich nur Ergebnisse die sich mit Beenden des Python Codes beim schreiben beschäftigten.

    Mein Problem ist: Wenn ich über SSH mit der Kommandozeile ein Python Script aufführe, wie kann ich es dann beenden ? Also wieder zurück zu "pi@raspberrypi ~ $" springen ? Weil währen der Code ausgeführt wird kann ich zwar noch Tastatureingaben machen allerdings keine Befehle eingeben (d.h. keine die ich kenne, die F-Tasten gehen auch nicht...).

    MfG c3ntry


  • Weicht ihr gerade nich' ein bisschen vom Thema ab ;)?


    Es ist für mich nicht so ganz klar ob der TE das Prog weiterlaufen lassen will oder nicht. Deshalb die Alternativen nohup oder screen.

    Alternativ kann das Pythonprogramm natürlich CTRL C abfangen und gracefully terminieren um Deine angedeuteten Probleme zu umgehen.

    Code
    try:
        # DO THINGS
    except KeyboardInterrupt:
        # shutdown gracefully
        sys.exit()

    Bin mir nur nicht sicher ob der TE das Pythonscript selbst geschrieben hat.

    Ergo muss der TE mal sein Problem genauer spezifizieren.

  • Hallo,
    Ich habe ein Python Script in crontab eingetragen:
    " 15 08 * * 1 python /home/user/script.py"
    Wie kann das Script beenden auch mit crontab ? (gibt's einen Befehl dazu ????) :
    " 00 20 * * 1 ???? /home/user/script.py"

  • Vielen Dank für die schnelle Antwort.
    kill -9 /home/user/script.py
    "kill" ist klar was macht. Was macht "-9" ? Ist ein PID nummer ? Wenn ja warum mit minus ?

    Wenn die Fragen zu idiotisch klingen, brauchst du nicht beantworten.

    • Offizieller Beitrag

    da hilft die ein Blick in die man page des Befehls "kill"

    Code
    man kill

    dort findet man für die Nummer 9

    Zitat

    KILL 9 exit cannot be blocked

    die 9 sagt ihm also er solle den Prozess töten. Als Alternative gibt es noch die 15, ein Termination Signal, welches versucht vorher den Prozess sauber zu beenden.


  • Vielen Dank für die schnelle Antwort.
    kill -9 /home/user/script.py
    "kill" ist klar was macht. Was macht "-9" ? Ist ein PID nummer ? Wenn ja warum mit minus ?

    Wenn die Fragen zu idiotisch klingen, brauchst du nicht beantworten.

    Vielleicht noch als kleine Ergänzung zu DBV's Beitrag.
    Mit kill kann man jedes Posix Signal an einen Prozess schicken.

    Wenn du diesem Link folgst, findest du eine Auflistung von den möglichen Signalen und die dazugehörige Zahl.
    Wikipedia

    Dabei kann ein Programm auf ein Signal reagieren oder eben nicht. SIGKILL (9) gehört zu den Signalen, welches auf jeden Fall dazu führt, dass der Prozess beendet wird.
    SIGTERM (15) bspw. KANN dazu führen, dass der Prozess beendet wird, falls das Programm dieses Signal abfängt und dementsprechend verarbeitet.

  • Es wäre besser das Script nicht stumpf zu töten sondern sauber zu beenden. Insbesondere wenn es zB mit GPIO zu tun hat sollte man es beim beenden dazu bewegen die GPIO's auch wieder zurück zu setzen.

    Wie hier schon erklärt wurde kann man mit 'kill' sog. Signale senden ua. SIGTERM oder SIGINT usw.

    Hier ein Beispiel für ein Python Script welches permanent laufen würde:

    Ein SIGINT wird auch ausgelöst wenn man STRG+C drückt. Fährt das System herunter wird ein SIGTERM gesendet, was in diesem Beispiel aber nicht beachtet wird.


    Quellen:
    kontrolliertes Beenden eines im Hintergrund laufenden Python-Programms
    Script sanft beenden
    Interrupt an Python Script senden

    //EDIT: Siehe dazu auch Script per Smartphone starten

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!