Ich migriere derzeit meine Entwicklungsplattform zu Ubuntu Xenial und kann nicht herausfinden, wie Ubuntu die init.d-Skripte mit systemd integriert. Sehen Sie sich beispielsweise diesen einzig gestalteten Service-Neustart für MariaDB an, der im Basis-Repository enthalten ist.
root@xenial:/etc/init.d# /etc/init.d/mysql restart
[ ok ] Restarting mysql (via systemctl): mysql.service.
Ich habe mir das Skript angesehen und kann nicht erkennen, wie es systemd überhaupt aufruft. Welche Hacks werden also durchgeführt, um es „(mit systemctl)“ zu integrieren?
Das bringt mich zu dem, was ich wirklich versuche, nämlich die Möglichkeit zu haben, Argumente mit systemd zu übergeben.
Wie weit ist die Init-Integration von systemd in Ubuntu Xenial insgesamt fortgeschritten oder handelt es sich wirklich nur um eine Reihe von Hacks für die Abwärtskompatibilität? Ich hatte erwartet, dass alles in diese neuen Servicedateien konvertiert wurde.
Antwort1
Die init.d
Skripte beziehen einige Bash-Funktionen aus dem LSB-Paket
. /lib/lsb/init-functions
Die andere aus anderen Paketen laden
# Include hooks from other packages in /lib/lsb/init-functions.d
for hook in $(run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2>/dev/null); do
[ -r $hook ] && . $hook || true
done
Wo systemd seine eigene Umleitung einfügt
~$ dpkg -S /lib/lsb/init-functions.d/40-systemd
systemd: /lib/lsb/init-functions.d/40-systemd
Notiz:Gefunden mitstrace /etc/init.d/.. status