Ich benötige mal wieder Eure Hilfe. Ich habe einen RPi mit Bullseye
Linux raspheizung 5.15.61+ #1579 Fri Aug 26 11:08:59 BST 2022 armv6l GNU/Linux
und ich möchte, dass dort im Startskript Programme automatisch gestartet werden. Starte ich sie per Hand, funktioniert alles. Nur der automatische Start funktioniert einfach nicht und die Suche im Netz ist so verwirrend, dass ich da nicht klar komme. Meine beiden Probleme beschreibe ich hier mal.
1) Ich möchte ein python-Skript starten. Das habe ich in rc.local eingetragen, aber es wird nicht ausgeführt (beim Start). In messages steht auch nichts. Ich habe keine Ahnung, wieso es nicht gestartet wird.
2) Ich möchte einen Dienst einrichten und habe in /etc/systemd/system eine vcnotrold.service Datei eingerichtet,
[Unit]
Description=vcontrold daemon
After=syslog.target systemd-udev-settle.service
[Service]
Type=forking
ExecStartPre=/bin/ls /dev/bus/usb/001
ExecStart=/usr/sbin/vcontrold -x /etc/vcontrold/vcontrold.xml
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=120
StandardOutput=null
[Install]
WantedBy=multi-user.target
Die Pfade sind korrekt. Aber
sudo systemctl start vcontrold
startet den Dienst nicht und in den Logs finde ich keinen Eintrag, warum das nicht passiert.
Kann mir jemand mal einen aktuellen Link geben, in dem ich nachlesen kann, wie das geht? Die Google-Suche liefert so viele zum Teil offensichtlich falsche Sachen, ich komme da nicht weiter.
zu 1: rc.local wird an sich nicht mehr empfohlen. Wie hast Du den Start des python skripts dort eingetragen?
zu 2: hast Du den neuen Dienst dem systemd bekanntgemacht mit "systemctl daemon-reload"?
Zu 1. Gib uns bitte Deine rc.local
Anstatt rc.local sollte man den cron bemühen, der kennt auch ein "@reboot".
(Schnelle Suche mit Google) z.B. https://www.tecchannel.de/a/cron-linux-tools-und-befehle-beim-boot-ausfuehren,3205434 (https://www.tecchannel.de/a/cron-linux-tools-und-befehle-beim-boot-ausfuehren,3205434)
Zu 2. Wirklich alle üblichen Verdächtigen geprüft? also unter /var/logs .......
Unter welchem User läuft der Dienst?
Danke erstmal für die Hilfe. Ja, das mit der schnellen Suche hatte ich auch, aber da standen dann einander widersprechende Dinge. So, zum Thema
rc.local
-rwxr-xr-x 1 root root 457 Oct 13 15:22 rc.local
enthält
python3 /home/pi/gas_wasser.py &
exit 0
Das mit dem bekanntmachen habe ich natürlich verpennt, vermutlich lag es daran. Bei den Logs habe ich
drwxr-xr-x 6 root root 4096 Oct 13 15:03 .
drwxr-xr-x 11 root root 4096 Sep 22 02:24 ..
-rw-r--r-- 1 root root 762 Oct 13 13:00 alternatives.log
drwxr-xr-x 2 root root 4096 Oct 13 13:08 apt
-rw-r----- 1 root adm 46805 Oct 13 17:19 auth.log
-rw-r--r-- 1 root root 0 Sep 22 02:23 bootstrap.log
-rw-rw---- 1 root utmp 0 Sep 22 02:23 btmp
-rw-r----- 1 root adm 193649 Oct 13 17:20 daemon.log
-rw-r----- 1 root adm 7047 Oct 13 15:30 debug
-rw-r--r-- 1 root root 33731 Oct 13 13:08 dpkg.log
-rw-r--r-- 1 root root 0 Sep 22 02:23 faillog
drwxr-sr-x+ 3 root systemd-journal 4096 Sep 22 02:23 journal
-rw-r----- 1 root adm 195553 Oct 13 16:47 kern.log
-rw-rw-r-- 1 root utmp 292292 Oct 13 17:19 lastlog
-rw-r----- 1 root adm 192545 Oct 13 17:18 messages
drwx------ 2 root root 4096 Sep 22 02:23 private
drwxr-xr-x 3 root root 4096 Sep 22 02:06 runit
-rw-r----- 1 root adm 398989 Oct 13 17:20 syslog
-rw-r----- 1 root adm 1200 Oct 13 13:20 user.log
-rw-rw-r-- 1 nobody dialout 854 Oct 13 17:18 vcontrold.log
-rw-rw-rw- 1 root root 2 Oct 13 13:22 vcontrol.log
-rw-rw-r-- 1 root utmp 20736 Oct 13 17:19 wtmp
und da kann man ja die üblichen Verdächtigen erkennen. Und die bin ich durchgegangen.
PS Der Dienst sollte unter root laufen, oder?
-rwxrwxrwx 1 root root 333 Oct 13 15:26 vcontrol.service
gerade neu gestartet. Beide Prozesse werden nicht neu gestartet.
sudo systemctl status vcontrol
● vcontrol.service - vcontrold daemon
Loaded: loaded (/etc/systemd/system/vcontrol.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Zitat von: andies am 13 Oktober 2022, 17:25:32
python3 /home/pi/gas_wasser.py &
Gib mal den vollständigen Pfad zu python3 mit an, vermutlich /usr/bin/python3
Danke, und systemctl konnte ich auch klären
sudo systemctl enable vcontrol
Synchronizing state of vcontrol.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable vcontrol
PS Die eigentlich wichtigste Frage: Wo informiert Ihr Euch, wenn Ihr da Probleme habt? Bitte nicht "Google", da finde ich Seiten von 1835...
Zitat von: betateilchen am 13 Oktober 2022, 17:29:04
Hast Du den neuen Dienst auch enabled mit "systemctl enable vcontrol"?
Hatte ich vergessen. "Enable" gibt es erst seit 1836 ;-)
Danke!
Zitat von: andies am 13 Oktober 2022, 17:25:32
gerade neu gestartet. Beide Prozesse werden nicht neu gestartet.
sudo systemctl status vcontrol
● vcontrol.service - vcontrold daemon
Loaded: loaded (/etc/systemd/system/vcontrol.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Funktioniert der manuelle Start von der Konsole aus?
Hast Du den neuen Dienst auch enabled mit "systemctl enable vcontrol"?
Zitat von: andies am 13 Oktober 2022, 17:28:22
PS Die eigentlich wichtigste Frage: Wo informiert Ihr Euch, wenn Ihr da Probleme habt? Bitte nicht "Google", da finde ich Seiten von 1835...
Bei Google. Aber halt mit den richtigen Suchbegriffen und nicht mit welchen aus 1835.
Wobei - die generelle Funktionsweise von systemd muss ich normalerweise nicht mehr googlen.
Zitat von: andies am 13 Oktober 2022, 17:27:42
Danke, und systemctl konnte ich auch klären
funktioniert denn nun beides?
ja, läuft beides!
Trotzdem solltest Du den Vorschlag beherzigen:
Zitat von: Wernieman am 13 Oktober 2022, 17:17:45
Anstatt rc.local sollte man den cron bemühen, der kennt auch ein "@reboot".
(Schnelle Suche mit Google) z.B. https://www.tecchannel.de/a/cron-linux-tools-und-befehle-beim-boot-ausfuehren,3205434 (https://www.tecchannel.de/a/cron-linux-tools-und-befehle-beim-boot-ausfuehren,3205434)
OK, mache ich, zumal ich im crontab was habe.
Anstatt mit /usr/bin/python aufzurufen, kannst Du auch mit #! arbeiten.
Also einfach in der ersten Zeile des Script ein
#!/usr/bin/python3
ZitatWobei - die generelle Funktionsweise von systemd muss ich normalerweise nicht mehr googlen.
Muß ich mich jetzt schämen, das ich dazu noch zu häufig google? Nur um sicherzugehen ...
Zitat von: Wernieman am 13 Oktober 2022, 17:36:07
Muß ich mich jetzt schämen, das ich dazu noch zu häufig google? Nur um sicherzugehen ...
Nö.
Zitat von: Wernieman am 13 Oktober 2022, 17:36:07
Anstatt mit /usr/bin/python aufzurufen, kannst Du auch mit #! arbeiten.
Also einfach in der ersten Zeile des Script ein
#!/usr/bin/python3
Dann solltest Du aber auch darauf hinweisen, dass man in diesem Fall die .py Datei ausführbar machen muss, sonst funktioniert es wieder nicht.
Ay Ay Sir 8)
Bekomme ich jetzt Popcorn?
Zitat von: Wernieman am 13 Oktober 2022, 17:57:42
Bekomme ich jetzt Popcorn?
sorry, das habe ich heute schon mit Joachim geteilt (https://forum.fhem.de/index.php/topic,129667.msg1239391.html#msg1239391)...