Como os serviços do sistema são iniciados em 12.10?

12

Uma coisa que sempre me confundiu no Ubuntu foi como os serviços do sistema são iniciados. Eu sei que o Ubuntu usa o Upstart e suporta o SysV, mas qual deles é usado para iniciar os serviços? Isso é importante quando você quer um início "manual" para um serviço.

Por exemplo, no meu sistema eu tenho arquivos para os seguintes serviços em /etc/init.d/<service> (SysV) e /etc/init/<service>.conf (Upstart):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Então, se eu quiser desabilitar a execução do MySQL na inicialização, devo usar o modo Upstart ou o modo SysV para desativá-lo? Além disso, como posso saber qual deles é realmente usado para iniciar um serviço genérico?

Editar

A verdadeira dúvida aqui não é como desativar / ativar serviços usando SysV / Upstart. O que realmente me confunde é que alguns serviços parecem estar definidos (e habilitados) no SysV e no Upstart ao mesmo tempo. Existe alguma precedência entre eles (como se mysql estivesse habilitado em ambos os lançamentos usando o SysV)? Ou pode ser o caso de uma ferramenta usar a outra em segundo plano?

    
por Salem 29.11.2012 / 15:16

2 respostas

2

Com relação aos serviços que estão definidos no SysV e no upstart, geralmente, se você reiniciá-lo através do SysV, você verá algo assim:

[email protected]:~$ sudo /etc/init.d/mysql restart
[sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

O que eu entendo isso é que o Upstart é o preferido para esses serviços, e a implementação do SysV é apenas um wrapper.

Além disso, acho que você tem o significado dos diretórios para trás. O / etc / init é uma configuração inicial, o /etc/init.d é a compatibilidade do SysV, mas é apenas um link simbólico para esse tipo de serviço.

    
por Alistair Buxton 02.12.2012 / 23:41
6

Isso depende muito do aplicativo e do mantenedor do seu pacote.

Há uma strong preferência por scripts Upstart porque eles manipulam eventos (o que geralmente é ótimo), mas muitos aplicativos não têm scripts suficientes Upstart disponíveis ou o mantenedor do aplicativo optou por ficar com os padrões (aplicativo ou Debian).

De qualquer maneira, você está na posição em que precisa se adaptar.

  • Para o Upstart:
    • Renomeie o arquivo para algo que não termine .conf ou
    • Adicione manual ao arquivo. Isso permitirá que você carregue manualmente o serviço.
  • Para serviços mais antigos:

    update-rc.d -f <service> remove
    

Se você tiver um script /etc/init.d/ para algo e um script /etc/init/ e quiser verificar se a versão init.d ainda está ativa, verifique com:

ls -l /etc/rc?.d/*<service>

Se você vir um carregamento de links simbólicos, ele será instalado no antigo init do SysV.

    
por Oli 02.12.2012 / 01:34