Estou gerenciando instalações de servidor dentro e fora do sabor do Ubuntu há algum tempo - me adaptei bastante /etc/init.d/
para reiniciar os serviços. Agora 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 causado no mais recente LTS do Ubuntu - por quê? O que há de tão ruim /etc/init.d/
e o que / há uma diferença entre service
e /etc/init.d/
?
Respostas:
/etc/init.d
scripts são a maneira antiga de fazer as coisas. Eles vêm do padrão System V. No entanto, esses scripts são disparados 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
/etc/init.d
scripts por scripts iniciados (in/etc/init
).service
permite a transição suave de/etc/init.d
scripts para scripts iniciais. No futuro, quando mais e mais scripts forem transferidos para o inicio, o serviço continuará funcionando porque encontra as duas possibilidades.fonte
Verifique também a página de manual para o comando service:
man service
service
executa um script em um ambiente previsível (o diretório de trabalho é / e apenas 2 variáveis de ambiente são definidas: LANG e TERM). Também adiciona a capacidade de fazer--full-restart
. Entao, para resumir:service
pode executar scripts a partir de / etc / init ou /etc/init.d (inicial ou System V)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 existe uma maneira de contornar isso, mas eu não sei o que é, e isso está além do escopo desta pergunta :)
fonte