Atualmente estou migrando minha plataforma de desenvolvimento para o Ubuntu Xenial e não consigo descobrir como o Ubuntu está integrando os scripts init.d ao systemd. Por exemplo, veja esta única reinicialização de serviço criada para MariaDB incluída no repositório base.
root@xenial:/etc/init.d# /etc/init.d/mysql restart
[ ok ] Restarting mysql (via systemctl): mysql.service.
Eu olhei no script e não consigo ver como ele chama o systemd. Então, que tipos de hacks ele está fazendo para integrar "(com systemctl)"?
Isso me traz o que realmente estou tentando fazer é ser capaz de passar argumentos com o systemd.
Então, no total, até que ponto está a integração init do Ubuntu Xenial com o systemd ou é realmente apenas uma série de hacks para compatibilidade com versões anteriores. Eu esperava descobrir que tudo havia sido convertido para esses novos arquivos de serviço.
Responder1
Os init.d
scripts fornecem algumas funções bash do pacote LSB
. /lib/lsb/init-functions
Que carregam outros de outros pacotes
# 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
Onde o systemd injeta seu próprio redirecionamento
~$ dpkg -S /lib/lsb/init-functions.d/40-systemd
systemd: /lib/lsb/init-functions.d/40-systemd
Observação:Encontrado usandostrace /etc/init.d/.. status