Question Je n'arrive pas à comprendre comment systemd s'intègre à Ubuntu 16.04


Je migre actuellement ma plate-forme de développement vers Ubuntu Xenial et je n'arrive pas à comprendre comment Ubuntu intègre les scripts init.d à systemd. Par exemple, regardez ce redémarrage de service unique pour MariaDB inclus dans le référentiel de base.

    root@xenial:/etc/init.d# /etc/init.d/mysql restart
    [ ok ] Restarting mysql (via systemctl): mysql.service.

J'ai regardé dans le script et je ne vois pas du tout comment cela s'appelle systemd. Alors, quel genre de hacks fait-il pour le faire intégrer "(avec systemctl)"?

Cela m'amène à essayer de faire passer des arguments avec systemd.

Au total, à quel point l'intégration initiale d'Ubuntu Xenial avec systemd est-elle longue ou s'agit-il simplement d'une série de hacks pour la compatibilité ascendante? Je m'attendais à trouver que tout avait été converti à ces nouveaux fichiers de service.


2
2018-05-05 02:07


origine




Réponses:


le init.d les scripts source une fonction bash du package LSB

. /lib/lsb/init-functions

Quel autre charge d'autres paquets

# 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

Où systemd injecte sa propre redirection

~$ dpkg -S /lib/lsb/init-functions.d/40-systemd 
systemd: /lib/lsb/init-functions.d/40-systemd

Remarque: Trouvé en utilisant strace /etc/init.d/.. status


2
2017-12-09 23:31