Einsteigerfrage zu Python Ausführung und Neustart

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • 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

  • 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

    🎧 Mein Auto springt, mein Toaster kocht, es zwickt mich im Genick. Meine Frau ist eingelocht, die Spülmaschine tickt. Meine Telefonapperat brüllt mich seit Tagen an, er ist schon lange abgestellt im Bett liegt Peter Pan. Die Uhr geht falsch, die Haustür singt, mein Spiegel schlägt zurück - Ich werde noch verrückt, was solls ich bin entzückt. Die Badewanne zieht nicht ab ihr glaubt nicht was ich seh' - Sie ist voll Himbeerengelee 🎧

  • Hallo keepfear


    danke für den Link. Ich wollte aber sehen was der TE an dem Code verändert hat, weil seit dem der Code "aus der Ausführung nicht mehr rauskommt". Was auch immer das bedeutet. :gk1:


    Grüße

    Dennis

    🎧 Mein Auto springt, mein Toaster kocht, es zwickt mich im Genick. Meine Frau ist eingelocht, die Spülmaschine tickt. Meine Telefonapperat brüllt mich seit Tagen an, er ist schon lange abgestellt im Bett liegt Peter Pan. Die Uhr geht falsch, die Haustür singt, mein Spiegel schlägt zurück - Ich werde noch verrückt, was solls ich bin entzückt. Die Badewanne zieht nicht ab ihr glaubt nicht was ich seh' - Sie ist voll Himbeerengelee 🎧

  • 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

    • Official Post

    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,


    Quote

    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

    • Official Post

    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,

    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 ?

    Verstehe ich nicht. Erklär' mal bitte genauer, worauf die Frage abzielt bzw. welches Verhalten du gerne hättest.


    Gruß, noisefloor

  • 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