Qual é a diferença entre “Service” e “/etc/init.d/”?

109

Eu venho gerenciando instalações de servidores dentro e fora do Ubuntu há algum tempo - eu me tornei bastante ajustado para /etc/init.d/ para reiniciar servcies. Agora eu recebo esta mensagem:

root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

Isso parece ter sido trazido no último LTS do Ubuntu - por quê? O que há de tão ruim em /etc/init.d/ e qual / há diferença entre service e /etc/init.d/ ?

    
por Marco Ceppi 12.08.2010 / 21:12
fonte

2 respostas

96

/etc/init.d scripts são o jeito antigo de fazer as coisas. Eles vêm do padrão System V. No entanto, esses scripts são acionados apenas em uma sequência específica, portanto, nenhuma dependência real pode ser estabelecida.

Portanto, o upstart foi desenvolvido com a intenção de substituir todos os scripts /etc/init.d por scripts upstart (em /etc/init ).

service permite a transição suave de scripts /etc/init.d para scripts iniciados. No futuro, quando mais e mais scripts forem transferidos para o upstart, o serviço continuará funcionando, pois encontrará as duas possibilidades.

por txwikinger 12.08.2010 / 21:33
fonte
26

Verifique também a página man do comando de serviço: man service

service executa um script em um ambiente previsível (o diretório de trabalho é / e apenas duas variáveis de ambiente são configuradas: LANG e TERM). Também adiciona a capacidade de fazer --full-restart . Então, para resumir:

  1. service pode executar scripts de / etc / init ou /etc/init.d (upstart ou System V)
  2. service executa scripts em um ambiente previsível.

O aspecto "ambiente previsível" pode causar problemas se o seu script depender de uma variável de ambiente por algum motivo. Provavelmente há uma maneira de contornar isso, mas eu não sei o que é, e isso está além do escopo desta questão:)

    
por Joe Marty 08.06.2011 / 17:52
fonte