Ich habe die folgenden (anonymisierten) systemd Skript tomcat-autostart.service, gespeichert in "/usr/lib/systemd/system/tomcat-autostart.service" genanntSystemd-Skript: Zuweisung außerhalb des Abschnitts; Fehlende '='
[Unit]
Description=Tomcat Autostart Script
Requires=var-www-projects.mount
After=var-www-projects.mount
[Service]
Type=forking
ExecStart=/usr/bin/tomcat-autostart start
ExecStop=/usr/bin/tomcat-autostart stop
[Install]
WantedBy=multi-user.target
Nach dem Ausführen
sudo systemctl daemon-reload
sudo systemctl enable tomcat-autostart.service
erhalte ich die Fehlermeldung:
Failed to execute operation: Bad message
Und ich bekomme auch die folgende Ausgabe in/var/log/messages
Feb 17 11:29:53 cheese systemd: [/usr/lib/systemd/system/tomcat-autostart.service:1] Assignment outside of section. Ignoring.
Feb 17 11:29:53 cheese systemd: tomcat-autostart.service lacks both ExecStart= and ExecStop= setting. Refusing.
Feb 17 11:29:53 cheese systemd: [/usr/lib/systemd/system/tomcat-autostart.service:1] Missing '='.
Feb 17 11:29:53 cheese systemd: [/usr/lib/systemd/system/tomcat-autostart.service:1] Missing '='.
Ich hatte es für eine Weile arbeiten, dann habe ich einige Kommentare über die Zeile "[Unit]" hinzugefügt, und es funktioniert nicht mehr. Ich entfernte dann die Kommentare und änderte wahrscheinlich unbeabsichtigt etwas anderes im Skript, und ich konnte es danach nicht mehr wieder in Betrieb nehmen.
Es scheint es in seinem eigenen Widerspruch zu erfreuen. Die erste Fehlermeldung besagt, dass eine Zuweisung in der ersten Zeile ('[Unit]') vorhanden ist, und die dritte besagt, dass der Zuweisung ein '=' - Zeichen fehlt. Im Grunde genommen ist "[Unit]" eine Zuweisung, außer dass es nicht daran liegt, dass ein '=' Zeichen fehlt.
Die Suche nach diesem Problem hat ergeben, dass die zweite Fehlermeldung eine direkte Ursache für die anderen ist. Da es die Abschnittsüberschriften ignoriert, liest es nie die Deklarationen ExecStart und ExecStop. Wenn ich die erste und dritte Fehlermeldung lösen kann, sollte ich in der Lage sein,
Was ist das eigentliche Problem mit meinem Skript? Das Ausführen von 'sudo/usr/bin/tomcat-autostart start' ist wie erwartet erfolgreich, und die häufigste Ursache im Internet für diese Fehlermeldung ist, dass das Skript keine absoluten Pfade verwendet (was ich in diesem Fall tue)
Ich habe überprüft, dass die Anonymisierung nichts geändert hat. Die Zeilen, die geändert wurden, waren die Zeilen Beschreibung, Requires, After, ExecStart und ExecStop sowie der Dateiname der Datei * .service.In der Datei gab es keine einfachen Anführungszeichen. Das Verschieben der Datei nach '/ etc/systemd/system' änderte nichts außer der Ausgabe in'/var/log/messages' (die nun auf '/etc/systemd/system/tomcat-autostart.service 'referenzierte ', statt'/usr/lib/systemd/system/tomcat-autostart.service') Allerdings werde ich dieses Verzeichnis in Zukunft verwenden. –
Siehe aktualisierte Antwort mit dem 'systemd-analyze verify' Tool. –