Autostart von Pythonscript über Systemd funktioniert nicht

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen,

    ich möchte beim Starten des Pi ein Pythonscript automatisch ausführen lassen. Dazu habe ich folgende Konfiguration durchgeführt:

    System:

    RPi 2B mit neuestem Stretch Release-Date 2018-11-13.

    Autostartfunktion (Konsole) des Pi-Users ist aktiviert.


    Code
    sudo nano /lib/systemd/system/Werkstattklima.service

    Inhalt der Datei Werkstattklima.service:

    Code
    [Unit] Description=Werkstattklima Service 
    After=multi-user.target
    
    [Service] Type=idle 
    ExecStart=/usr/bin/python /home/pi/messen/MessenSpeichernTSpeak_V2.01.py
    
    [Install] WantedBy=multi-user.target

    Rechte gesetzt:

    Code
    sudo chmod 644 /lib/systemd/system/Werkstattklima.service

    Nach der folgenden Anweisung wurde das Script einmal ausgeführt!

    Code
    sudo systemctl daemon-reload
    Code
    sudo systemctl enable Werkstattklima.service

    System neu gestartet:

    Code
    sudo reboot

    Das Script "MessenSpeichernTSpeak.py" wird nach dem reboot nicht ausgeführt!

    Die Rechte von MessenSpeichernTSpeak.py sind 755.

    Wird das Script von hand gestartet läuft es ohne Probleme:

    Code
    ./MessenSpeichernTSpeak_V2.01.py

    Mit älteren OS habe ich rc.local verwendet um das selbe Script zu starten, aber des funzt ja ab Jessie nicht mehr...

    Weis jemand Rat?

    Schöne Grüße RM

    2 Mal editiert, zuletzt von RoterMilan (2. Dezember 2018 um 22:25)

  • Autostart von Pythonscript über Systemd funktioniert nicht? Schau mal ob du hier fündig wirst!

  • Hallo,

    was sagt denn der Status der Unit? Den kannst du via systemctl abfragen. Was was steht in Journal von systemd zu der Unit? Das Journal kannst du über journalctl abfragen.

    Unabhängig davon: wenn dein Skript was Loggen soll, dann nimm' das Logging Modul, das hat Python standardmäßig an Bord. Dann brauchst du nicht dne Umweg über die Shell und deren Umleitungen. Außerdem kannst du den Loglevel mit `logging` besser einstellen.

    Gruß, noisefloor

  • Hi noisefloor,

    was sagt denn der Status der Unit?

    systemctl > Meine erstellte Unit taucht da nicht auf

    Was was steht in Journal von systemd zu der Unit?

    journalctl > Meine erstellte Unit taucht da auch nicht auf

    hmmm...

    Werde deinen Rat mit dem Logging-Modul verfolgen..

    Gruß RM

  • Moin!

    Ich denke das der Tipp von noisefloor der Beste ist.

    Hier nur noch ein Hinweis auf systemctl-Units.

    Vor dem enablen einfach mal ein sudo systemctl start xyz.service. Dann sieht man sofort ob es funktioniert.

    Gruss 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.

  • sudo nano /lib/systemd/system/Werkstattklima.service

    Die Service-Unit gehört nach /etc/systemd/system/Werkstattklima.service

    Zunächstmal die falsche wieder disablen und dann an die richtige Stelle moven. Dann 2 terminal-fenster untereinander öffnen....

    im ersten wird journalctl -f eingegeben. Im zweiten wird danach die Service-Unit gestartet und dabei die Reaktion im ersten Fenster beobachtet.

    Code
    cd /etc/systemd/system
    systemctl daemon-reload
    systemctl start Werkstattklima.service
    systemctl status Werkstattklima.service

    Ausserdem ist das imho ein Widerspruch, der sich gegenseitig ausschließt:

    Code
    [Unit]
    After=multi-user.target
    [Install] 
    WantedBy=multi-user.target

    WantedBy=graphical.target behebt diesen Konflikt.

    3 Mal editiert, zuletzt von WinterUnit16246 (2. Dezember 2018 um 23:21)

  • Hallo zusammen,

    ich habe auch ein wenig in der Doku gelesen um Systemd besser zu verstehen.

    Folgendes habe ich gemacht:

    1.) Ich habe die Unit Werkstattklima.service in /etc/systemd/system/ verschoben.

    2.) In der Unit habe ich die Zeile "After=multi-user.target" entfernt. Ich mache einen Autostart in den User Pi zur Konsole, nicht zur graphischen Oberfläche.

    Die Unit sieht nun so aus:

    Code
    [Unit]
    Description=Werkstattklima Service
    
    [Service]
    Type=idle
    ExecStart=/usr/bin/python /home/pi/messen/MessenSpeichernTSpeak_V2.01.py
    
    [Install]
    WantedBy=multi-user.target

    3.) Dann habe ich folgende Kommandos ausgeführt:

    Code
    pi@raspberrypi:~ $ sudo systemctl daemon-reload
    pi@raspberrypi:~ $ sudo systemctl start Werkstattklima.service
    pi@raspberrypi:~ $ sudo systemctl status Werkstattklima.service

    Werkstattklima.service - Werkstattklima Service

    Loaded: loaded (/etc/systemd/system/Werkstattklima.service; enabled; vendor preset: enabled)

    Active: active (running) since Mon 2018-12-03 21:54:11 CET; 56s ago

    Main PID: 244 (python)

    CGroup: /system.slice/Werkstattklima.service

    └─244 /usr/bin/python /home/pi/messen/MessenSpeichernTSpeak_V2.01.py

    Sah schonmal gut aus!

    Code
    pi@raspberrypi:~ $ sudo systemctl enable Werkstattklima.service
    pi@raspberrypi:~ $ sudo reboot

    Nach dem reboot wieder:

    Code
    pi@raspberrypi:~ $ sudo systemctl status Werkstattklima.service

    Werkstattklima.service - Werkstattklima Service

    Loaded: loaded (/etc/systemd/system/Werkstattklima.service; enabled; vendor preset: enabled)

    Active: active (running) since Mon 2018-12-03 21:54:11 CET; 56s ago

    Main PID: 244 (python)

    CGroup: /system.slice/Werkstattklima.service

    └─244 /usr/bin/python /home/pi/messen/MessenSpeichernTSpeak_V2.01.py

    Alles läuft perfekt!

    Vielen Dank für eure Mithilfe!

    :danke_ATDE: RM

  • Moin RoterMilan,

    danke für die Rückmeldung!

    Dann, bitte, noch dein Thema als erledigt markieren. Das geht oben bei "Thema bearbeiten".

    Gruss 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!