%3F.png)
Obwohl das Problemhier ausgestelltscheint sehr ähnlich zu sein, keine der bereitgestellten Lösungen funktioniert. Kontext:
- Raspberry Pi Zero W, Raspbian Lite (20.08.2020)
- Ich möchte ein Python3-Skript als Dienst registrieren, um es im Hintergrund auszuführen
Ich wollte es mit systemd zum Laufen bringen, was mit folgender Konfiguration funktionierte:
application.service
besteht in/etc/systemd/system/application.service
[Unit]
Description=application
After=multi-user.target
[Service]
User=custom_user
Type=idle
TimeoutSec=0
PIDFile=/run/application.pid
ExecStart=/usr/bin/python3 -u /path/to/application.py >> /path/to/log.log 2>&1
KillMode=control-group
Environment="PYTHONUNBUFFERED=1"
Restart=always
RestartSec=3s
[Install]
WantedBy=multi-user.target
Dieser Dienst wird beim Start in den erwarteten Segmenten (bezogen auf Wants
und WantedBy
Abschnitte) korrekt geladen.Aber es wird nichts in der Protokolldatei protokolliert, die ich bereitgestellt habe. Sie bemerken Environment
den Eintrag zum Erzwingen PYTHONUNBUFFERED
und dasselbe gilt für das -u
Argument, das beim Aufruf der ausführbaren Python-Datei übergeben wird. Dies hat überhaupt keine Auswirkungen.
Wenn ich genau dieselbe Exec-Zeile auf einer CLI starte, wird das Skript ausgeführt UND protokolliert. Über die Dienstdefinition erfolgt überhaupt kein Protokoll.
Randnotizen:
- Wenn ich
journalctl
die Ausgabe überprüfe, finde ich meine Protokollzeilen logrotate
undlog2ram
sind auf der Logdatei/dem Verzeichnis eingerichtet
Ich habe am Ende meine Befehlszeile hinzugefügt, /etc/rc.local
gefolgt von einem Et-Zeichen. Das ist meiner Meinung nach nicht möglich, da ich diesen Dienst in Bezug auf das System, auf dem er ausgeführt wird, so gut wie möglich registrieren möchte.
Danke für eure Antworten und Aufklärungen.
Antwort1
Sie sollten nicht versuchen, Shell-Umleitungen auf diese Weise zu verwenden. Dies funktioniert nicht, da systemd keine Shell ist. Geben Sie stattdessenStandardOutput=
UndStandardError=
ausdrücklich, wenn Sie möchten, dass sie an eine andere Stelle als die Zeitschrift weitergeleitet werden.