Hallo Zusammen,
anlässlich der Diskussionen über systemd wollte ich passender weise meine erste service.unit erstellen. Gestartet werden soll ein Pythonskript.
Dies ist ein Wetterbot, dieses Skript soll 24/7 aktiv sein.
Das Skript wird schon ca. 1 Jahr über rc.local erfolgreich gestartet:
/etc/rc.local: /usr/bin/python3 /home/pi/Wetterbot/wetterbot.py &
Jetzt wollte ich wie folgt auf systemd umstellen:
/etc/systemd/system/wetterbot.service:
[Unit]
Description=ServiceUnit zum starten des Wetterbots
[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/pi/Wetterbot/wetterbot.py
Restart=always
[Install]
WantedBy=multi-user.target
Anschließend noch aktiviert mit systemctl enable wetterbot.service
Eine Überprüfung ergibt folgendes sudo systemctl status wetterbot.service:
● wetterbot.service - ServiceUnit zum starten des Wetterbots
Loaded: loaded (/etc/systemd/system/wetterbot.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-04-17 19:16:00 CEST; 8min ago
Main PID: 20853 (python3)
CGroup: /system.slice/wetterbot.service
└─20853 /usr/bin/python3 /home/pi/Wetterbot/wetterbot.py
Apr 17 19:16:00 wetterstation systemd[1]: Started ServiceUnit zum starten des Wetterbots.
ps uax | grep wetterbot.py
root 20853 1.0 2.6 30180 24900 ? Ss 19:15 0:08 /usr/bin/python3 /home/pi/Wetterbot/wetterbot.py
pi 21427 0.0 0.0 4776 532 pts/1 S+
Jedoch reagiert der Telegram Bot widererwartend nicht. Der vollständigkeithalber hier noch das Pythonskript, jedoch da auch über rc.local mit absoluten Pfaden gearbeitet wird, kann ich mir nicht vorstellen dass das Skript der Schuldige ist. Für diejenige die es doch ansehen, der sei gewarnt, dieses Skript wartet noch auf seine Überarbeitung um meine neue Kenntnisse in Sachen Python einfließen zu lassen.
Quellcode aufgrund der Zeichenbeschränkung als Anhang
Also warum funktioniert es über rc.local aber nicht via systemd?
EDIT: Das Pfade via os.path.join zusammengesetzt werden sollten und absolute Pfade immer und überall ist mittlerweile bekannt - nur um da gleich bzgl des Skriptes zuvorzukommen - aber in rc.local funktioniert es ja auch warum nicht in systemd