Einsteigerfrage zu Python Ausführung und Neustart

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Ihrs...

    Mir fehlt gerade der absolute Durchblick..

    ich habe auf meinem Pi 3B von Adafruit die

    Animated Eyes laufen.

    Soweit ich weiß wird dieses durch die rc.lokal gestartet sieht dann so aus :

    /boot/Pi_Eyes/fbx2 -i &

    cd /boot/Pi_Eyes;python3 eyes.py --radius 240 &

    Läuft beim boot einwandfrei durch.

    Jetzt habe ich die eyes.py geändert und mochte jetzt nicht neu booten.

    Also habe ich sudo killall -9 fbx2

    sudo killall -9 python3 beide Tasks gekiillt

    sudo /boot/Pi_Eyes/fbx2 -i &

    funktioniert so wie es aussieht..

    Wenn ich aber jetzt

    cd /boot/Pi_Eyes

    sudo python3 eyes.py --radius 240 &

    eingebe passiert nichts .. Ausser das irgendetwas im Hintergrund läuft und ich eine Pid bekomme. Aber in der rc.lokal wird es doch so gestartet und läuft da..

    Gebe ich aber

    sudo python3 eyes.py --radius 240

    ein läuft es, komme aber aus der Ausführung nicht mehr raus

    Woran kann das liegen ??

    Daniel

  • Einsteigerfrage zu Python Ausführung und Neustart? Schau mal ob du hier fündig wirst!

  • Hallo,

    als erstes ersetze den Autostart wie hier von __blackjack__ beschrieben.

    Das starten deines Programms hängt also von dem '&' ab? Hast du mal geschaut was das bedeutet?

    Jetzt habe ich die eyes.py geändert

    ein läuft es, komme aber aus der Ausführung nicht mehr raus

    Um den Fehler zu finden, zeig uns bitte den Code. Setze ihn hier im Forum in Code-Tags (das ist der </> Knopf).

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Ich habe nur Inhalte der eyes.py geändert (die Augen sehen dann etwas anders aus)

    Komisch ist wenn die 2 Zeilen über das booten und dann rc.local aufgerufen werden klappt alles...

    Was ich erreichen möchte, ist : jedesmal wenn ich an der Configurationsdatei etwas ändere, nicht immer neu booten zu müssen.


    In die rc.local wurden diese 2 Zeilen eingefügt :

    /boot/Pi_Eyes/fbx2 -i &

    cd /boot/Pi_Eyes;python3 eyes.py --radius 240 &

    Ja, rc.local mag veraltet sein... ist aber Softwaretechnisch SO gelöst worden.

    Alles was in der rc.local steht wird mit root rechten gestartet.

    das "&" am Ende stellt den Prozess in den Hintergrund als daemon.

    Ich möchte aus diesen beiden Zeilen ein Start / Stop Script machen um dieses schnell neu zu starten statt jedesmal das ganze System zu booten.

    Habe beide Prozesse mit sudo killall fbx2 und killall python3 beendet.

    Als Neustart habe ich !bin/sh (mit und ohne -e) stehen lassen als Shell

    Aus den beiden Zeilen habe ich im Script folgendes gemacht :

    sudo /boot/Pi_Eyes/fbx2 -i &

    cd /boot/Pi_Eyes

    sudo python3 eyes.py --radius 240 &

    oder auch ausprobiert :

    cd /boot/Pi_Eyes;sudo python3 eyes.py --radius 240 &

    Bekomme dann von Python Fehlermeldungen.

    Wenn ich die beiden Zeilen per Hand eingebe scheint die erste Zeile zu funktionieren da sich wie beim booten das Ergebnis auf den Displays sehe.

    Wenn ich jetzt die 2. Zeile nehme , mit "&" für Hintergrund, bekomme ich eine PID angezeigt, es passiert aber auf den Displays nichts.

    Komischerweise, wenn ich die Zeile ohne "&" nehme funktioniert es, da das Programm eine Dauerschleife hat, komme ich natürlich nicht mehr raus.. ohne es zu beenden..

    Hoffe das war jetzt etwas deutlicher erklärt..

    Gruß Daniel

    • Offizieller Beitrag

    Als Neustart habe ich !bin/sh

    Da fehlt aber noch was! https://de.wikipedia.org/wiki/Shebang


    sudo killall fbx2 und killall python3

    Warum nicht mit pkill -f eyes.py nur das Skript beenden?

    Bekomme dann von Python Fehlermeldungen.

    Welche?

  • Hallo,

    Zitat

    Was ich erreichen möchte, ist : jedesmal wenn ich an der Configurationsdatei etwas ändere, nicht immer neu booten zu müssen.

    Wenn du dein Programm als systemd Service Unit startest, hast du auch die Möglichkeit, die Unit im laufenden Betrieb neu zu starten.

    rc.local ist (total) veraltet, das gibt es nur noch aus Gründen der Rückwärtskompatibität und könnte bei jeder neuen Version von Debian / Raspberry Pi OS wegfallen. Was in rc.local steht wird letztendlich auch von einer systemd Service Unit ausgeführt. Die volle Kontrolle hast du aber nur, wenn du dir selber eine Unit schreibst.

    Gruß, noisefloor

    • Offizieller Beitrag

    Also das beenden macht mir keine Sorgen

    Mir schon, denn wenn Du alles killst, was mit Python3 läuft, dann könnte es irgendwann ziemlich lustig im System werden.

    Problem ist der neustart..

    Wir drehen uns im Kreis. Beantworte bitte die Fragen und höre auf die vielen Hinweise bezüglich Systemd Service Unit! Wenn wir Dir helfen sollen, dann musst Du Dir auch helfen lassen, sonst wird das nüscht.

  • Mir schon, denn wenn Du alles killst, was mit Python3 läuft, dann könnte es irgendwann ziemlich lustig im System werden.

    Wir drehen uns im Kreis. Beantworte bitte die Fragen und höre auf die vielen Hinweise bezüglich Systemd Service Unit! Wenn wir Dir helfen sollen, dann musst Du Dir auch helfen lassen, sonst wird das nüscht.

    Bin gerade zeitlich viel eingespannt ..JAaaa.. werde mich der Systemd Starterei annehmen...
    Aber ??? was im Aufruf ändert sich wenn es im Vordergrund nbeu gestartet werden kann aber nicht erneut in den Hintergrung will ??

    Ändert das Startverhalten von Systemd etwas am Aufruf der Phytondatei ?

  • Hallo Noisefloor

    Ich habe diese 2 Zeilen :

    /boot/Pi_Eyes/fbx2 -i &

    cd /boot/Pi_Eyes;python3 eyes.py --radius 240 &

    Wie in den Threads beschrieben, beim starten des Pi`s klappt alles

    Sobald ich beides kille, bekomme ich es egal WIE nicht wieder neu gestartet.

    Man hat mir empfohlen es über systemd zu starten statt über rc.local

    DAS werde ich mir zeitnah ansehen und umstellen.

    Die erste Zeile scheint sich wieder neu starten zu lassen.

    Aber die 2. (python Zeile) halt nicht..

    Als Zeile im Vordergrund klappt es, aber sobald ich das & für Hintergrund beisetze bekomme ich eine PID aber nichts passiert mehr..

    DAS ist daran das Problem

    Lg Daniel

Jetzt mitmachen!

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