Der systemd-Dienst landet nach dem Booten im Status „inaktiv (tot)“

Der systemd-Dienst landet nach dem Booten im Status „inaktiv (tot)“

Ich habe meinen Dienst hinzugefügt zusystemd(Ich verwende es auf einempi3), es sieht aus wie das:

[Unit]
Description=Oral-B BLE scanner service
Wants=network-online.target
After=network-online.target
StartLimitBurst=10
StartLimitIntervalSec=10
Requires=bluetooth.target

[Service]
Type=simple
WorkingDirectory=/home/pi/scripts
ExecStart=/home/pi/scripts/scanOralB.py
Restart=always
RestartSec=10

[Install]
WantedBy=network-online.target

Ich habe einen symbolischen Link zur obigen Datei hinzugefügt in/lib/systemd/system. Ich habe den Dienst auch aktiviert. Nur um sicherzugehen, habe ich es überprüft.

pi@raspberrypi:~ $ systemctl is-enabled scanOralB.service
enabled

Wenn ich neu starte und den Status überprüfe, sieht es folgendermaßen aus:

pi@raspberrypi:~ $ sudo systemctl status scanOralB.service
* scanOralB.service - Oral-B BLE scanner service
   Loaded: loaded (/home/pi/scripts/scanOralB.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

Wenn ich den Dienst manuell starte, funktioniert er einwandfrei. Kann mir jemand erklären, warum der Dienst nach dem Booten nicht gestartet wird? Ich erhalte keine zusätzliche Ausgabe vonmagazinctlentweder.

Antwort1

Es wird nicht gestartet, weil es von nichts, was gestartet wird, gewünscht wird.

[Installieren]
WantedBy=Netzwerk-Online.Ziel
Ich habe einen symbolischen Link zur obigen Datei hinzugefügt in/lib/systemd/system.

Das ist so ziemlich alles falsch.

  • Die Unit-Datei sollteplatziertin /etc/systemd/system. Symbolische Links werden von systemd eigenwillig interpretiert und haben nicht die herkömmliche Dateisystemsemantik. Und /lib/systemd/systemes ist nicht der richtige Ort für handgeschriebene Unit-Dateien, die nicht aus Paketen stammen.
  • Die Unit-Datei sollte von etwas benötigt werden, das tatsächlich beim Bootstrap gestartet wird. network-online.targetIst normalerweise nicht der Fall. multi-user.targetIst die übliche Wahl. graphical.targetIst eine andere.

verwandte Informationen