Python automatisch starten

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Netdeus
User
Beiträge: 25
Registriert: Sonntag 19. Juli 2020, 12:18

Hi;

ich habe nun endlich mein Script fertig und würde es gerne bei jedem Start vom Pi ausführen. Dabei aber brauche ich folgende Bedingungen:

1. Vor dem Start des eigentlichen Scripts muss noch ein Befehl ausgeführt werden (sudo pigpiod), damit das eigentliche Script überhaupt funktioniert
2. Das Script muss in einem Terminalfenster ausgeführt werden, wie stelle ich sicher, dass dies gestartet und auch maximiert wird?
3. Wenn möglich, würde ich den Start des Scripts gerne um ca. 5 Sekunden verzögern, ist dies irgendwie möglich?

vielen Dank schon mal für die Hilfe
Benutzeravatar
Dennis89
User
Beiträge: 1123
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ein Programm automatisch zu einer gewünschten Zeit oder beim Systemstart, auch mit Verzögerung, macht man mit System-Units. Hier mal Links um dich einzulesen:
https://www.splendid-internet.de/blog/b ... t-systemd/
https://wiki.archlinux.de/title/Systemd/Timers
https://opensource.com/article/20/7/systemd-timers
Das sollte 1 und 3 beantworten.

Zu 2: Wieso? Gibt dein Programm Werte im Terminal aus? Wenn ja, brauchst du die restliche grafische Oberfläche des Raspberry OS ? Wenn nein, könntest du einfach Raspberry OS - lite nehmen.
Ansonsten gibts dafür sicherlich auch eine einfache Lösung, nur dabei kann ich dir leider nicht helfen.

Viel Erfolg
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
pumukel
User
Beiträge: 5
Registriert: Samstag 24. März 2018, 17:32

Hallo, ein Autostart ist ganz einfach zu realisieren.
Damit meine Scripts bei Raspistart automatisch gestartet werden, habe ich mir einen einfachen Startmechanismus gebastelt.
Im Homeverzeichnis gibt es den versteckten Ordner ".config". In .config wird ein Ordner autostart angelegt. In dem Ordner autostart wird die Datei pythonstart.desktop (kann auch einen anderen Namen haben, nur die Endung .desktop ist Pflicht) mit folgendem Inhalt angelegt:
[Desktop Entry]
Type=Application
Name=Pythonstart
Comment=bash
Exec=sh /home/pi/pythonstart/py_start.sh
StartupNotify=true

Im Homeverzeichnis habe ich den Ordner pythonstart angelegt. Dort befindet sich auch die Datei py_start.sh. Diese Datei wird aus dem Script auch gestartet.
Der Inhalt:
#!/bin/sh
mkdir /run/user/1000/test
sleep 5
/usr/bin/python3 /xxx/yyy1.py &
/usr/bin/python3 /xxx/yyy2.py &
usw.

Das Beispiel legt ein Verzeichnis an, wartet kurz und startet dann Scripte.
xxx bzw. yyy.py sind der Pfad und das zu startende Script. Wichtig, das & nicht vergessen, damit das Startscript nicht wartet.
Warum das Ganze - auf diese Weise ist sichergestellt, dass die Pythonscripte erst starten, wenn der Bootprozess des Raspi sicher abgeschlossen ist. Die Anzahl der zu startenden Programme in der py_start.sh und auch mögliche Verzögerungen zwischen den Programmen ist beliebig.
Es können natürlich auch Kopieraktionen usw. ausgeführt werden.
Gruß pumukel
Benutzeravatar
Dennis89
User
Beiträge: 1123
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo pumukel,

findest du dein Vorgehen nicht etwas zu umständlich, wenn man es mit der von mir gezeigten Möglichkeit vergleicht?


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Dennis89: Es soll ein Terminalemulator gestartet werden. Dazu muss sich ein Benutzer an der grafischen Oberfläche anmelden und *dann* muss das starten. Dafür ist `~/.config/autostart/` da. Wie würdest Du das denn mit systemd machen wollen? Und warum ist das umständlicher dort eine *.desktop-Datei anzulegen als woanders eine systemd-Unit anzulegen? Das nimmt sich nicht viel IMHO.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Wird das Terminalfenster denn zwangsweise benötigt wird, oder könnte das ganze auch komplett ohne GUI laufen? Systemd hat halt den Vorteil, dass man damit Abhängigkeiten usw. sehr gut ausdrücken kann, statt irgendwas mit sleep usw. zu basteln.
Benutzeravatar
Dennis89
User
Beiträge: 1123
Registriert: Freitag 11. Dezember 2020, 15:13

Oh sorry, das mit dem Terminal hatte ich nicht mehr im Kopf.
Mit Umständlich meinte ich, dass System-Units viele Vorteile und einfache "Einstellungen" bietet und es sich lohnt sich das mal anzuschauen. Aber das passt ja nicht zum Problem des TE.
Das passiert wenn man nebenher versucht seine eigene Probleme zu lösen :roll:
@Pumukel ignorier meinen Beitrag einfach, sorry.
@__blackjack__ Danke für deinen Hinweis, ich werde ihn Zukunft mehr bei der Sache sein.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Letztlich wird es vielleicht eine Mischung sein. Denn systemd ist für so etwas wie Daemons, also wenn `pigpiod` gestartet werden soll, dann wäre das ein Fall für dafür. Dann braucht der Benutzer unter dessen Konto das ”grafische” Programm gestartet wird, auch keine Superuserrechte einfordern.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
Dennis89
User
Beiträge: 1123
Registriert: Freitag 11. Dezember 2020, 15:13

'pigpiod' kann doch mit 'systemctl enable pigpiod' einmal aktiviert werden und dann braucht man 'sudo pigpiod' nach jedem Systemstart nicht mehr, oder täusche ich mich?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
hyle
User
Beiträge: 96
Registriert: Sonntag 22. Dezember 2019, 23:19
Wohnort: Leipzig

Ich hatte (auch hier) schon mal beschrieben wie ein Skript im Terminal geöffnet wird: viewtopic.php?f=31&t=49433#p371696

Btw. Vor das Ausführen des Skrips noch ein "sudo pigpiod && " zu setzten, sollte dann auch kein Ding mehr sein.

Wobei ich auch der Meinung bin, dass pigpiod nur einmal aktiviert werden muss. Siehe u.a. hier: https://www.elektronik-kompendium.de/si ... 202121.htm
Alles was wir sind ist Sand im Wind Hoschi.
Antworten