Python-Script nach dem booten richtig starten

Begonnen von TomLee, 02 April 2022, 12:51:20

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

kann mir bitte wer sagen wie man es richtig macht das Skript nach dem booten zu starten ?

Als User pi starte ich das Skript im Verzeichnis bla mit python3 meinskript.py.

Ich habs bisher versucht mit

sudo crontab -e

und mit dem user pi

crontab -e

jeweils mit diesem Eintrag:

@reboot screen -dm bash -c "cd ~/bla; python3 meinskript.py"

Klappt beides nicht, wo könnte man nachschauen was schief läuft ?

Gruß

Thomas

rudolfkoenig

Laut screen Handbuch:
Zitat-c file
            override the default configuration file from $HOME/.screenrc to file.

Ich wuerde den Befehl erst in der Kommandoziele testen, und erst dann ins cron hinter @reboot eintragen.

TomLee

Wenn ich das als user pi mache:

screen -dm bash -c "cd ~/bla; python3 meinskript.py"

dann wird das Skript ganz normal gestartet, was ich mit screen -r dann sehe, weil das die einzige "Session" ist die läuft.

Ich gebe ganz offen zu das ich mit dem Zitat aus dem Handbuch noch nix anfangen kann, kommt vlt. noch (und muss auch gleich weg).

rudolfkoenig

Sorry, mein Fehler, -c geht an bash nicht an screen.
~ gilt fuer den Benutzer, der das ausfuehrt, d.h. root und pi sind unterschiedlich.
Ich wuerde sicherheitshalber den Pfad komplett ausschreiben.

TomLee

Mit
sudo crontab -e
@reboot screen -dm bash -c "cd /home/pi/bla; python3 meinskript.py"


sehe ich mit screen -r weiterhin nix (müsst ich doch nach dem booten ?), wenn das Skript laufen würde sehe ich das auch an einem Arduino Nano der per USB angeschlossen ist und in kurzen Intervallen dann blinken müsste.

TomLee

In der syslog steht einfach nur:

Apr  2 23:10:58 FHEMPIOS cron[396]: (CRON) INFO (Running @reboot jobs)

Mehr Infos gibts nicht.

schwatter

Moin,

ist den screen notwendig? Läuft dein Script dauerhaft im Hintergrund oder immer nur einmalig?

Ich führe selber ein Script alle 10min einmalig aus.


*/10 * * * * python /opt/rr/my.py

Bei dir sollte es dann so funktionieren.

@reboot python3 /home/pi/bla/meinskript.py

Gruß schwatter

Wernieman

Grundsätzlich sollt man bei cron mit kompletten Pfaden arbeiten. Cron lädt normalerweise die Umgebung des Users nicht. Woher soll dann die shell wissen, wo screen liegt?

Wenn ein Befehl als User läuft, als cron aber nicht, liegt meistens genau dieser Fehler vor!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

#8
Das doch wie verhext, es klappt auch nicht mit:

Als user pi:

@reboot python3 /home/pi/meinskript.py"

Auf zwei Systemen, einmal Bullseye und Buster.

Wenns einmal laufen würde, wär mir screen egal, es soll halt immer starten, ohne zutun.

Keine Ahnung obs was mit den Rechten zu tun hat, die Datei war bisher nicht ausführbar, das hab ich einfach mal geändert, ohne Auswirkungen.

-rwxr-xr-x 1 pi pi   46231 Mar 31 15:48  meinskript.py

Wernieman

- Zeig mal Dein Script
- Du startes python immer noch nicht mit Pfad.

Hinweis: "whereis python3"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

Zitat- Zeig mal Dein Script

8)  ::)  :P es macht einfach nur Spass sich mit zu beschäftigen und man lernt ja auch was dabei.

Wernieman

Nur ... ohne Inhalt kann man schlecht sagen, wo denn der Fehler liegen Könnte

Wie in meine Footer steht: Ohne Input kein Output
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

Wie meinst du das, "ohne Inhalt" ? Du wolltest das Skript sehen !?

Otto123

Werner meinte vor allem den Aufruf so
@reboot /usr/bin/python3 /home/pi/duino-coin/meinskript.py"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

whereis python3
python3: /usr/bin/python3 /usr/bin/python3.9-config /usr/bin/python3.9 /usr/lib/python3 /usr/lib/python3.9 /etc/python3 /etc/python3.9 /usr/local/lib/python3.9 /usr/include/python3.9 /usr/share/python3 /usr/share/man/man1/python3.1.gz


Mit:
@reboot /usr/bin/python3 /home/pi/bla/meinskript.py"
erfolgt immer noch kein Start des Skript nach reboot.

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Und zusätzlich:
Woher weißt Du, das Dein Script nicht gestartet wurde?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

Zitatämmh die Gänsefüße am Ende?

8)

Auch nach Korrektur, der Nano blinkt nicht  ;D

ZitatWoher weißt Du, das Dein Script nicht gestartet wurde?

Zitat von: TomLee am 02 April 2022, 14:11:55
wenn das Skript laufen würde sehe ich das auch an einem Arduino Nano der per USB angeschlossen ist und in kurzen Intervallen dann blinken müsste.

TomLee

Lösung, eine Pause:

@reboot screen -dm bash -c "cd ~/bla; sleep 10; python3 meinskript.py"

Otto123

Dann will Dein Script etwas, was unmittelbar nach dem Start nicht verfügbar ist? Sowas wie Netzwerk oder so?
Klingt eigentlich danach, als ob Du eine Abhängigkeit einbauen müsstest. oder statt cron systemd verwenden? Oder damit leben :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Klar will das Skript Internet, dachte das wär klar gewesen nachdem ich das Skript gezeigt hatte, jetzt ist mir auch klarer auf was man achten muss.

Wernieman

?? Habe ich was übersehen ??
Wo ist das Script?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee


Wernieman

in #10 Steht aber nichts ... also vom Inhalt

Zitat
Woher weißt Du, das Dein Script nicht gestartet wurde?
wenn das Skript laufen würde sehe ich das auch an einem Arduino Nano der per USB angeschlossen ist und in kurzen Intervallen dann blinken müsste.
Wenn Dein Arduino blinkt, weißt Du das Dein Script gestartet wurde und funktioniert. Aber ob es gestartet wurde und nicht funktioniert, weißt Du eben nicht. Ergänze mal Dein Script mit Logausgaben. Vielleicht wird es gestartet, funktioniert nur eben nicht als Cron, oder zu früh, spät oder sonstwas ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

Zitatin #10 Steht aber nichts ... also vom Inhalt

Man kann aber dem Link folgen.

ZitatWenn Dein Arduino blinkt, ...

Wenn der Nano blinkt, hat er eine "Aufgabe" gelöst oder fordert (über das Skript via Internet) eine Neue an (weiß ich noch nicht welche Situation das ist). Ergo blinkt der Nano läuft das Skript. In einem Dashboard kann man auch sehen das der Nano arbeitet.

TomLee

Achso, das sleep verwende ich in der ganz am Anfang erwähnten Anweisung:

@reboot screen -dm bash -c "cd ~/bla; sleep 10; python3 meinskript.py"

Ich sehe also auch nach dem reboot, mit screen -r, das alles tut was es soll.

Thyraz

Zitat von: TomLee am 04 April 2022, 09:22:10
Man kann aber dem Link folgen.

Sorry, hab nix sinnvolles beizutragen, aber einen Link hinter 3 Smilies zu verstecken?  :o

Cooler Trick wenn man unbedingt erreichen will, dass einem keiner hilft. Merk ich mir für das nächste Mal. *duckundweg*  ;)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Wernieman

#27
Danke Thyraz, ich bin jedenfalls nicht darauf gekommen, das ein Link hinter Smilies ist ...... wollte hier schon genervt mit Hilfe aufgeben ...

@TomLee
Baue dir trotzdem mal mehr Debuginfos ein ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html