Programm im Hintergrund ohne Terminal

  • Hallo zusammen,

    ich möchte ein Python Skript im Hintergrund ausführen, sodass ich die Verbindung per SSH vom Pi trennen kann und später wieder anmachen (der Pi soll die ganze Zeit weiterlaufen mit dem Python Skript).

    Außerdem möchte ich die Ausgabe kontinuierlich in ein Txt Dokument schreiben lassen (das Python Skript schreibt alle 10 sek die Uhrzeit an (ist nur ein Test-Skript)).

    Ich bin bisher auf den Befehl

    Code
    python skript.py >> log.txt 2> error.txt &

    gekommen, allerdings wird zum einen nicht kontinuierlich angehängt (wenn ich, während das Python Skript läuft, die log.txt anschaue => steht nix drin), zum anderen wird es beendet, sobald ich das Terminal (Putty) beende.

    Gibt es da einen pfiffigen Linux Befehl für?

    VG und danke
    elchico

    Edit: ich habe den Befehl "screen" auch schon gefunden, aber kontinuierlich läuft da auch nicht und sobald ich das Haupt-Terminal schließe (zum Beispiel, indem ich meine SSH - Verbindung schließe) schließt auch das Python Skript

    Einmal editiert, zuletzt von elchico (1. Dezember 2015 um 21:22)

  • vielen Dank erst einmal

    disown und auch screen schau ich mir nochmal an.

    aber es wird trotzd scheinbar nix in mein log-file geschrieben. hat hierzu noch jmd. eine Idee?

    danke :)

    EDIT: hat sich erledigt, danke :)

    Einmal editiert, zuletzt von elchico (1. Dezember 2015 um 22:12)

  • Ich werfe dann auch einfach mal was in den Raum um die Liste zu komplettieren: nohup, watch, Terminator, screen, tmux, byobu
    Aber wie hier anscheint üblich, erspar ich mir weitere Kommentare? :s ..nunja..


    Zu deinem Problem:

    Befehle mit "&" am Ende führen dazu das diese im Hintergrund ausgeführt werden. Sobald du aber deine Sitzung beendest werden auch die von dir im Hintergrund ausgeführten Befehle beendet, da diese an deine Sitzung gekoppelt sind. Mithilfe von solchen eben genannter Programme, kann man virtuelle Konsolensitzungen erzeugen die dann unabhängig der eigenen, echten, Sitzung laufen. Diese virtuelle Konsolensitzungen können getrennt ("detach") und später weitergeführt werden ("attach").

    Wenn du ein Script laufen lassen und zu einem späteren Zeitpunkt dessen Ausgabe 'live' betrachten und ggf auch eingreifen können willst - musst du solch eine virtuelle Sitzung verwenden.
    Würde es aber sowieso automatisch gestartet werden, ginge das auch mithilfe von /etc/rc.local und dann eben mit "&" am Ende - dann läuft es als Benutzer root.


    Warum deine Umleitung nicht funktioniert kann ich aber nicht nachvollziehen - kann aber daran liegen das ich den Inhalt deines Scripts nicht kenne :denker:

    Du magst vielleicht nur denken das dein Script nach trennen und erneutem aufbauen der SSH Verbindung auch bei screen nicht mehr laufen würde - aber höchst wahrscheinlich wurde es einfach nur detached, also läuft dann eben im Hintergrund... Kontrollier das einfach mal durch ps ux oder screen -list

  • [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> aber es wird trotzd scheinbar nix in mein log-file geschrieben. hat hierzu noch jmd. eine Idee?[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]WARTEN bis 4096 Bytes geschrieben sind.[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wenn dann was im File steht, liegt's am BUFFERING.[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Das kann man umgehen wenn man im Script ein flush auf den Standard-Output macht.[/font]

Jetzt mitmachen!

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