Einsteigerfrage zum Startmodus des Raspis

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Aus Standart Debian bin ich es gewohnt, das entsprechende Runlevel abgearbeitet werden.

    Und die einzelnen Scripte aus z.B. init.d per Symlink in die Runlevel gesetzt sind.

    Jetzt habe ich für die Adafruit Animated Eyes 2 Eintragungen in die rc.lokal bekommen.

    Diese soll nach Ausführung des entsprechenden Runlevels am Ende ztur Ausführung angehangen werden.

    OK.. Soweit verständlich.

    Die rc.lokal soll auch per sudo /etc/rc.lokal aufgerufen werden können.

    #!/bin/sh -e

    #

    # rc.local

    #

    # This script is executed at the end of each multiuser runlevel.

    # Make sure that the script will "exit 0" on success or any other

    # value on error.

    #

    # In order to enable or disable this script just change the execution

    # bits.

    #

    # By default this script does nothing.

    # Print the IP address

    _IP=$(hostname -I) || true

    if [ "$_IP" ]; then

    printf "My IP address is %s\n" "$_IP"

    fi

    /boot/Pi_Eyes/fbx2 -i &

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

    exit 0


    Als erstes verstehe ich das -e hinter dem sh in der ersten Zeile nicht. Wofür steht das ?

    Zweitens, habe ich die fbx2 und Python Zeilen genommen und wollte damit ein Start / Stop Script raus machen

    DAS klappt aber nun gar nicht.

    Habe folgendes versucht :

    #! /bin/sh -e

    ### BEGIN INIT INFO

    # Provides: eyes

    # Required-Start:....

    # Required-Stop:

    # X-Start-Before:....

    # Default-Start: 2 3 4 5

    # Default-Stop:

    # Short-Description: Provide limited super user privileges to specific users

    # Description: Provide limited super user privileges to specific users.

    ### END INIT INFO

    case "$1" in

    start)

    sudo /boot/Pi_Eyes/fbx2 -i &

    cd /boot/Pi_Eyes

    sudo python3 eyes.py --radius 240 &

    ;;

    stop)

    sudo killall -9 fbx2

    sudo killall -9 python3

    ;;

    restart)

    $0 stop

    $0 start

    ;;

    ..

    *)

    echo "Usage: $N {start|stop|restart}" >&2

    exit 1

    ;;

    esac

    exit 0

    Warum läuft das so nicht ?!

    Hat da jemand vorschläge ?

    Wenn ich die Zeilen einzeln eingebe,

    scheint die fbx Zeile zu funktionieren. Aber die Python Zeile nicht

    Gebe ich

    cd /boot/Pi_Eyes

    sudo python3 eyes.py --radius 240 &

    Bekomme ich eine PID aber nichts erscheint auf den Displays.

    gebe ich jetzt aber sudo python3 eyes.py --radius 240 ohne das "&" ein

    ( & Soll doch eigentlich die Ausführung in den Hintergrund legen)

    Klappt der Befehl un die Augen werden angezeigt.

    Überfordert mich irgendwie..

    Vielleicht hat da jemand eine Ahnung warm das mit der Ausführung so ist..

    Daniel

  • #!/bin/sh -e

    Als erstes verstehe ich das -e hinter dem sh in der ersten Zeile nicht. Wofür steht das ?

    Das -e wird Dir unter Argument List Prozessing von < man sh > erklärt.

    "Sys V" funktioniert zwar noch aus historischen Gründen und wird über sogenannte Generatoren teilweise in "systemd" eingebunden. Du solltest Dich aber gleich mit systemd vertraut machen, statt Dich mit den Runleveln zu quälen. Auch Debian hat die Boot- und Ablaufkontrolle auf systemd geändert. [Probiere einmal < apropos systemd > ].

    Servus !

    RTFM = Read The Factory Manual, oder so

  • 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

  • Halloweenfreak Du willst da kein Start/Stop-Skript für init.d sondern eine Service-Unit für Systemd schreiben. init.d macht man nicht mehr. Und die rc.local gibt es zwar noch, aber die wird mit systemd nicht mehr zwingend ganz am Ende ausgeführt, weil einer der Vorteile von systemd gegenüber init.d ist, dass versucht wird viel mehr parallel zu starten, weil systemd einen detaillierteren Überblick über Abhängigkeiten zwischen den Diensten hat.

    Du bekommst also von Python Fehlermeldungen. Verrate doch mal *welche*. Die deuten ja auf ein Problem hin das wir nicht kennen.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Ich schau da gleich nochmal nach wegen den Fehlermeldungen..

    Mein grundproblem löst sich trotzdem noch nicht.. Wie bekomme ich es lauffähig neu gestartet..

    Sind doch nur die 2 Zeilen die gestartet werden.. und die 2. Zeile klappt halt nicht..

    Da die Augen ja durchgehend auf den Displays angezeigt werden und in Bewegung sind, ist das eyes.py in sich eine Endlosprogramm.

    .. Warum aber, beim booten des Pi`s mit der rc.local läuft es direkt bis zu den Augen und hat Python3 mit der eyes im Background gestartet, ich es aber manuell egal wie ich es ausprobiere NICHT in den Hintergrund bekomme sondern NUR im Vordergrung laufen lassen kann und beim Background entweder eine PID aber kein Bild am Display habe oder Python Fehler bekomme ???

    Die Zeile ist ja nicht verändsert um das aufzurufen ?! DAS Kapier ich halt nicht

  • Moin Halloweenfreak,

    wir schreiben hier von den Drachenaugen auf einem oder 2 Display's?

    Und ein sudo /boot/Pi_Eyes/fbx2 -i & startet auch richtig?

    Ist das soweit korrekt?

    73 de Bernd

    //EDIT welchen Raspberry nutzt du?

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Raspi 3B
    Ich meine das FBX scheint zu starten
    Aber ich bekomme den Rest nicht neu gestartet,..
    Egal wie ich die Pythonzeile aufrufe.. Da passiert nix .. AUSSER ich starte sie im Vordergrund
    Da ists dann blöd weill die Augen ja in Dauerschleife laufen..
    Sobald ich es mit & in den Hintergrund legen will, kommt eine PID aber nichts passiert mehr ...

    DARAN hänge ich gerade..

  • Moin Halloweenfreak,

    in allen Anleitungen steht du sollst mit

    Code
    sudo /boot/Pi_Eyes/fbx2 -i &

    starten. Nix von *.py

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

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