
Ich habe ein Init-Skript im LSB-Format erstellt und es in das Verzeichnis /etc/init.d kopiert. Ich kann den Dienst manuell starten, stoppen und seinen Status überprüfen und alles funktioniert einwandfrei. Dann versuche ich, den Dienst so einzustellen, dass er mit Runlevels automatisch gestoppt/gestartet wird, indem ich Folgendes mache:
update-rc.d service defaults
und ich sehe Warnungen wie:
update-rc.d: Warnung: xxx Start-Runlevel-Argumente (keine) stimmen nicht mit den LSB-Standard-Startwerten (3 4 5) überein.
und „initctl list“ zeigt meinen Dienst nicht an. Muss ich einen Schritt ausführen, damit dieser Dienst richtig registriert wird oder angezeigt wird? (Ich weiß, dass es bei RedHat „chkconfig --add xxx“ ist), aber ich kenne Ubuntu nicht gut genug.
Antwort1
initctl
ist Teil des Upstart-Mechanismus von Ubuntu. initctl list
zeigt Ihnen nur den Status von Upstart-Jobs. Ihr Skript ist tatsächlich ein SysV-Init-Skript.
Um den Status des SysV-Init-Skripts aufzulisten, verwenden Sie diesen Befehl:
service --status-all
Ihr Dienst sollte dort aufgeführt sein.
Um Links in den /etc/rcN
Ordnern zu erstellen, verwenden Sie den folgenden Befehl:
update-rc.d your_init_script defaults
Aus der Manpage von update-rc.d
:
Wenn die Standardeinstellungen verwendet werden, erstellt update-rc.d Links zum Starten des Dienstes im Runlevel 2345 und zum Stoppen des Dienstes im Runlevel 016.