Welcher autostart

  • Wie zu sehen geht es um autostart!

    Ok mir sind 3 möglichkeiten bekannt

    Ich will mein Raspberry nur in Console starten. Was kein Problem ist. Geht ja in raspi-config.


    Mein python script starte ich

    Code
    ./ORDNER/script.py

    Im Script

    Python
    #!/usr/bin/python # für Python2
    
    #!/usr/bin/python3 # für Python3


    Startvorgang;

    Wheezy startet nur in Konsole

    Jessie, Stretch und Buster starten in Desktop, was ich aber abstellen kann ( siehe oben )


    Die Autostarts wo ich kenne:

    1: systemctl

    Habe ich noch nicht richtig zum laufen gebracht

    2: init.d

    Hat geklapt aber, zu viel Code

    3: rc.local

    Denke das wäre das wo ich nutzen sollte


    Bisherige Programme wo ich automatisch starten lassen mußte war Apache oder Bind all sowas wo im Hintergrund läuft ( so sehe ich es ) und das jetzige im Vordergrund sowas wie Textverarbeitung oder so

    Mein script soll nach dem eigendlichen Start mein script starten

    Hintergrund dafür ist das mein script als erstes ein LED zum leuchten bringt und auf auf eingaben wartet ( Tastendruck ) und dann die Eingaben verarbeitet und wieder in Wartestellung geht.

    Autostart habe ich gewählt da ich nicht immer vor Ort bin und nach einen Stromausfall oder Ein/Ausschalter gegeben ist das nach dem Start wieder genutzt werden kann, fei von allem.


    Welche Variante wäre für mich da die wo in Frage kommt ? Wenn überhaupt möglich ist.

  • Hallo,

    die Datei /etc/rc.local ist nur noch aus Kompatibilitätsgründen vorhanden. Sie wird auch nicht mehr am Ende des Startups ausgeführt. Die OS-Versionen Wheezy, Jessie, Stretch sind Historie, z.Z ist Buster aktuell.

    Seit dem Übergang von SysV zu systemd sollte zum Autostart eine systemd user unit verwendet werden.

    Suche mal "ubuntuusers systemd user unit".

    Schönen Gruß, kle


    Edit: python2 wird nicht mehr gewartet (End Of Lifetime).

  • Viele wo ich gefunden habe (anleitungen zum nachbau) sind für Raspberry2 ausgelegt.

    Habe zwar einen aber nicht weiter im Einsatz

    Vom Raspberry3b habe ich mehr einige übrig und wollte damit arbeiten

    zu einem nutze ich eine RFID Reader und versuche eine LCD Anzeige (16x2mit i2c) anzuschließen

    mit der LCD wollte ich die print im script sichtbar machen aber das kommt später.

    im Komplettsystem habe ich noch 10 LEDs und 6 Taster (aber nicht voll aufgebaut da mir zu meinen Gehäuse wo alles eingebaut werden soll die Frontplatte fehlt.

    habe mit der hilfe vom kle weiter gemacht.

    aber dann kam ich wieder nicht weiter

    da ich keine Kontrolle über da wo gestartet ist ( der Pi wird nur auf Konsole gestartet ) , wenn ich mich dann über Putty anmelde sehe ich nichts was passiert.

    wenn ich aber nach anmeldung über putty zugreife und dann mein script starte dann sehe ich was passiert ( habe print im script viel eingesetzt ).


    Gibt es eine möglichkeit zwischen programme oder script hin und her zu springen ( Multitasking ) ?

  • Das ich Putty mehrfach aufrufen kann ist klar

    Python Loggin ist auch nicht das wo ich suche

    Was ich nicht so ganz verstehe:


    Konfiguration

    Boot - zu CLI

    Automatische Anmeldung - Als Benutzer 'pi' anmelden

    ( mir noch klar )


    ubuntuusers systemd user unit

    und ohne user


    Wenn ich mein script nicht als user ausführe ist es dann wie apache2 ?

    Wen ich es als user nun ausführe und ich mich über putty anmelde, sehe ich mein script laufen ( als wen ich ich über dektop terminal ausführe ) ?

  • Wen ich es als user nun ausführe und ich mich über putty anmelde, sehe ich mein script laufen ( als wen ich ich über dektop terminal ausführe ) ?

    Nein, nicht ohne weiteres.

    Ein Weg: du lässt es in einer abgehängten (detached) screen/tmux-Session laufen, mit der du dich jederzeit wieder verbinden kannst.

    Menschen die keine Ironie verstehen finde ich super!

  • Ich verstehe nichts mehr

    habe einige Zeit im Internet weiter gesucht und bin da auf etwas gestoßen was brauchbar wäre

    allerdings wieder ein fehlschlag

    also von vorne

    nocht startet mein PI in Desktop

    ich stelle um auf CLI

    Starte neu

    Sobalt PI hochgefahren ist soll er mein python script ausführen

    mein script soll LED ansteuern und ein Chip auslesen

    nach dem auslesen soll script auf nächsten chip warten

    mein script klappt wenn ich es von Hand starte

    also python /home/pi/mfrc/ms.py oder ./mfrc/ms.py

    cron und rc.local wäre keine lösung so internet aussagen

    kann mir jemand eine Datei senden welche ich nutzen kann ?

    • Official Post

    cron und rc.local wäre keine lösung so internet aussagen

    Das Internet hat nicht immer recht, hier liegt es zumindest 50% daneben.


    Ein Cronjob wäre eine der Möglichkeiten, die funktionieren sollten. Eine Systemd Service Unit wäre eine andere, vielleicht bessere Möglichkeit.

  • Dein Problem ist, dass eine Shell in zwei Modi verwendet wird. Einmal im interactiven Modus (mit Ein-, Ausgabe über das "Terminal"), einmal im non interactiven Modus (im Hintergrund) wo es (natürlich) keine Ein-Ausgabe über Tastatur/Bildschirm gibt


    Wenn Dein Script eine Eingabe vom Keyboard erwartet, dann musst Du es im interaktiven Modus (also im Vordergrund) starten, oder zumindest in den Vordergrund holen.

    Eigene Putty Session, oder screen wurde schon erwähnt, die sind auch immer an einen User gebunden.


    Innerhalb einer Shell kannst Du auch "fg" und "bg" verwenden, um ein in den Hintergrund gestellten Prouess wieder in den Vordergrund (für die Eingabe) zu holen. < man bash > Job Control.


    Im GUI kannst Du Dein Script aus einer *desktop Datei (automatisch) starten und das Terminalfenster auf das Pic verkleinern.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • .desktop entfällt für mich

    der pi läuft später ohne bildschirm ohne maus ohne tastatur

    aber ein RFID-Reader und bis zu 6 Taster sollen genutzt werden

    Mit den 6 Taster will ich 6 Programme ausführen

    4 währen für Chip scannen und Werte aus einer DB in eine DB schreiben

    2 für Chip einlesen und in DB schreiben

    ich meine über eine .service Datei denke ich hatte ich es mal geschaft ohne Taster

    mein script am laufen zu haben

    im Grunde:

    Ist Chip nicht in DB dann weiter mit neuen Chip

    Ist Chip ind DB aber nicht in anderer DB ein Voreintrag dann neu Eintrag erstellen

    wenn Chip in DB und in anderer DB dann nachtrag vornehmen

    aber alles zu seiner zeit

  • Habe mal gelesen über fg, bg , screen, tmux

    wobei ich mir die frage stelle

    Warum schwer wenn es doch so leicht ist

    oder denke ich falsch

    Beispiel:

    dhcpd, apache2, mysql werden mit dem System gestartet

    unabhänig vom USER

    dann müßte es doch auch mit meinen script auch möglich sein

  • Dein Scrip holt eine (Tastatur-)Eingabe ab, deshalb muss das Input-Device mit dem Script verbunden sein. Das tut es automatisch nur im Vorgergrund (interaktiv).


    Servus !

    RTFM = Read The Factory Manual, oder so