systemctl erkennt meinen Dienst nicht: Default-Start enthält keine Runlevel und bricht ab

13

Ich möchte einen einfachen Dienst definieren, der beim Booten auf Ubuntu Server 16.10 gestartet werden soll. Also habe ich eine erstellt/etc/init.d/mydaemon

Ich habe irgendwie zwischen Upstart und Systemd durcheinander gebracht: Zuerst dachte ich, ich müsste einen Upstart-Service einrichten. Nachdem ich meine Datei in eine Upstart-Syntax konvertiert hatte, lief ich update-rc.d mydaemon defaults.

Ich habe meinen Fehler herausgefunden und ausgeführt update-rc.d mydaemon remove, in die Systemd-Syntax konvertiert und ausgeführt systemctl enable mydaemon, aber den Fehler erhalten:

mydaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mydaemon
update-rc.d: error: mydaemonDefault-Start contains no runlevels, aborting.
CharlesB
quelle

Antworten:

14

Ich hatte den gleichen Fehler beim Portieren eines Sysv-Skripts von einer Redhat-Box nach Ubuntu. Ich musste dem Skript einige Header hinzufügen

### BEGIN INIT INFO
# Provides:          my-service-name
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: your description here
### END INIT INFO

gefunden in /ubuntu/909523/default-start-contains-no-runlevels-aborting

Nick Fox
quelle
siehe auch wiki.debian.org/LSBInitScripts
Nick Fox
1
Mein Skript hat bereits diesen Reader, zeigt aber immer noch genau den gleichen Fehler. = [
Luciano Andress Martini
hat meinen Tag gerettet :-) Vielen Dank
Aravinthan K
11

Das Problem war, dass der Speicherort der Datei auf dem Ubuntu-Server, auf dem sie erwartet wird /etc/systemd/system, /etc/init.d/für ältere Dateien bestimmt ist.

CharlesB
quelle
Diese Lösung hat meinen Service
behoben
Ich denke, diese Lösung funktioniert nicht, wenn das Init-Skript ein Bash-Skript ist. Anstatt die Datei zu kopieren, müssen Parameter auf den Laufebenen als Kommentare hinzugefügt werden, wie Nick Fox in ihrer Antwort angegeben hat.
LaTechneuse
Sicher, die erste Frage bezieht sich auf eine .serviceDatei, nicht auf ein Bash-Init-Skript.
CharlesB
7

Nur um die Antwort von @CharlesB zu ergänzen - als ich in diesen Zustand kam, konnte ich die Datei einfach von /etc/init.d/nach verschieben /etc/systemd/system/und den Befehl erneut ausführen, und es funktionierte ordnungsgemäß:

sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon
Cory
quelle
1
Dies sollte ein Kommentar sein.
Gerald Schneider
Ich denke, es ist einfacher, der Antwort zu folgen, also habe ich sie zu einer gemacht.
Cory
0

Ich hatte den gleichen Fehler und habe ihn behoben, indem ich die Standardstartinformationen wie folgt eingegeben habe:

vi /etc/init.d/greenbone-security-assistant

Wechsel von:

# Default-Start:

zu:

# Default-Start: 2 3 4 5

: wq

root @ kali: /etc/init.d# systemctl aktiviert den Greenbone-Sicherheitsassistenten

Synchronisieren des Status von greenbone-security-Assistant.service mit dem SysV-Dienstskript mit / lib / systemd / systemd-sysv-install.

Ausführen: / lib / systemd / systemd-sysv-install aktiviert den Greenbone-Sicherheitsassistenten

Fernando Galves
quelle