ubuntuusers.de

Raspberry Pi Python Datei automatisch starten

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Maek86

Anmeldungsdatum:
7. September 2018

Beiträge: Zähle...

Guten Tag zusammen,

ich habe eine kurze Frage bei der in nicht weiter komme.

Ich habe einen Raspberry Pi 3b+ und möchte das beim starten bzw neustarten des Geräts ein Script automatisch geöffnet wird. Wenn ich das Script manuell im Terminal aufrufe, funktioniert es auch. Wenn ich das Script über Crontab automatisch öffnen lassen möchte, klappt es nicht. Ich habe mehrer Guides gefunden und durch probiert, ans laufen bekomme ich es aber nicht.

Folgende Zeilen habe ich in crontab -e getestet:

@reboot /usr/bin/python /home/pi/Desktop/Dateiname.py
@reboot python /home/pi/Desktop/Dateiname.py
@reboot python /home/pi/Desktop/Dateiname.py &

Vielleicht weiss ja zufällig jemand, woran es bei mir scheitert. Wünsche euch einen schönen Abend

beste Grüße Patrick

Bearbeitet von Taomon:

Bißchen codeblock spendiert.

Moderiert von Taomon:

Sichtbar gemacht.

engheneiro

Anmeldungsdatum:
13. August 2009

Beiträge: 2080

Wohnort: Nähe München

Ich habe nur einen Verdacht, was es sein könnte. Cron startet scripte mit "sh" und nicht mit "bash", d.h. das Environment ist wahrscheinlich komplett anders.

Ich würde im Cron ein shell-script starten, das in einer bash läuft und ggf. vorher die benötigten Environment-Variablen setzt und dann das Python aufruft. Also shell-Script wie z.B.

startmypython.sh

#!/bin/bash
export PATH=....
python python_script.py argument
...

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Ich würde Cron nicht zum Starten von Skripten nutzen, sondern systemd/Units dafür anlegen oder bei Abhängigkeit zum X-Server den Autostart nutzen.

Außerdem musst du dir genau überlegen, welche Abhängigkeiten (Netzwerkverbindung, andere Dienste oder Programme) das Python-Skript hat, um die sauber auflösen zu können.

Maek86

(Themenstarter)

Anmeldungsdatum:
7. September 2018

Beiträge: 10

Jungs,

vielen Dank für eure Hilfe, hat soweit alles super geklappt.

Beste Grüße Patrick

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

seahawk1986 schrieb:

... oder bei Abhängigkeit zum X-Server den Autostart nutzen.

BTW: Sollte man bei einer Abhängigkeit zum X-Server, nicht auch eine service unit (systemd) verwenden können, mit z. B.:

[Install]
WantedBy=graphical.target

? ... denn:

für Mehrbenutzersystem, die aber eine grafische Anmelde-Oberfläche haben müssen (entspricht Runlevel 3 plus grafischer Anmeldung)

lt. Wiki.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Das Problem dabei ist, dass das graphical.target dem Start des Login-Manager entspricht, nicht dem Start der Desktop-Session des Benutzers. Und der X-Server wird für die Session normalerweise dann noch mal neu gestartet. Man kann einen Systemd-Job für die Systemd-User Session anlegen (für einen bestimmten Benutzer in ~/.config/systemd/user/, für alle in ~/etc/systemd/user/, der dann noch mit systemctl --user enable foo.service aktiviert werden muss), wenn die Linux-Distribution das unterstützt - bei Ubuntu kam das nach der Ablösung von Upstart in der Desktop-Session, irgendwann nach der 16.04 und vor der 18.04.

Antworten |