Como verificar se um serviço foi iniciado por upstart ou sysvinit?

2

Para alguns serviços (ex: bluetooth) eu tenho entradas em /etc/init.d/ e no diretório /etc/init/ .

Como sei como esse serviço é iniciado? Por sysvinit ou upstart ?

Estou usando o Ubuntu 14.04.

    
por sps 29.12.2015 / 03:10

1 resposta

1

Você pode ter dois conjuntos de scripts, mas você só tem um sistema init ativo. No Ubuntu 14.04, isso é o Upstart.

Portanto, não importa se o script está em /etc/init.d ou /etc/init , a resposta para qual sistema init executa seu script no Ubuntu 14.04 é sempre Upstart.

Você pode observar o que acontece quando você tenta executar um script /etc/init.d usando strace para registrar as chamadas do sistema em STDOUT:

 sudo strace /etc/init.d/bluetooth start

Primeiro, você verá que o script de inicialização primeiro carrega algumas funções de cabeçalho por meio de /lib/lsb/init-functions

open("/lib/lsb/init-functions", O_RDONLY) = 3

Em breve, você verá a atividade desviada para um script relacionado ao Upstart:

open("/lib/lsb/init-functions.d/01-upstart-lsb", O_RDONLY) = 3

Isso é apenas um script de shell, para que você possa abri-lo e ler a fonte para ver o que ele faz.

À medida que você continua com a saída completa, acho que verá que o comando é redirecionado para iniciar o script usando o script Upstart, em vez do script init do SysV.

O que é interessante ver é que em 16.04 , o Upstart redireciona ainda mais o controle para o systemd, e o serviço systemd relacionado é iniciado em seu lugar:

write(1, "Starting bluetooth (via systemct"..., 53Starting bluetooth (via systemctl): bluetooth.service) = 53

O conselho final para usar scripts Upstart e comandos de gerenciamento de serviço no Ubuntu 14.04 para evitar a complexidade e a potencial confusão da camada de compatibilidade init do SysV. Da mesma forma, depois de atualizar para o 16.04, comece a usar os arquivos nativos systemd unity e systemctl para evitar envolver camadas de compatibilidade desnecessárias.

    
por Mark Stosberg 04.01.2017 / 16:05