Warum gibt es für mehrere Daemons sowohl ein Upstart-Skript als auch ein init.d-Skript?

Warum gibt es für mehrere Daemons sowohl ein Upstart-Skript als auch ein init.d-Skript?

Ich verwende Ubuntu 12.04.3 LTS und habe mehrere Dienste wie Samba, DHCP-Server usw. installiert.

Ich erhalte die folgende Warnung, wenn ich „halt now“, „telinit 6“ oder ähnliches ausführe:

Since the script you are attempting to invoke has been converted
to an Upstart job, you may also use the...

Ich kann sehen, dass die betroffenen Dienste zweimal versuchen, zu stoppen/starten. Einmal über den Upstart-Job und erneut über die S/K-Symlinks im Ordner /etc/rcN.d, die auf das init.d-Skript abzielen. Wahrscheinlich kann ich den Symlink im Ordner /etc/rcN.d einfach entfernen.

Beispielablauf:

  1. Führen Sie „halt now“ von der Shell aus aus
  2. Upstart stoppt Samba (weil es eine Upstart-Konfigurationsdatei für Samba gibt)
  3. SysV versucht erneut, Samba zu stoppen (da auch ein symbolischer Link /etc/rc0.d/K20smbd vorhanden ist)

Ich verstehe/will Schritt 3 nicht, da er unnötig erscheint und eine hässliche Warnung anzeigt.

Warum gibt es für mehrere Daemons sowohl das Upstart-Skript als auch die Symlinks zum init.d-Skript? Ist es richtig, dass ich die doppelten Symlinks in jedem /etc/rcN.d-Ordner manuell bereinigen muss?

Antwort1

Ubuntu verfügt über Kompatibilitätslinks init, die bei jeder Ausführung die entsprechenden Upstart-Gegenstücke aufrufen.

Wenn Sie beispielsweise anrufen, sudo /etc/init.d/apache startwerden Sie mit „upstart-job“ verbunden. Dort wird Ihnen eine nette Informationsmeldung angezeigt, die Sie verwenden sollten, sudo services apache startund anschließend wird der Befehl automatisch ausgeführt.

ls -l /etc/init.d/network-manager 
lrwxrwxrwx 1 root root 21 Sep 18 14:02 /etc/init.d/network-manager -> /lib/init/upstart-job

cat /lib/init/upstart-job
#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.
{ lots of ASCII awesomeness }

Antwort2

Ich habe herausgefunden, dass es sich um eine Fehlkonfiguration in meinen Puppet-Skripten handelt.

Das Attribut „enable“ vom Typ „service“ hat das SysV-Init-Skript erstellt, anstatt das Upstart-Skript zu erkennen.

verwandte Informationen