Anteriormente, o comando service era tradicionalmente usado para gerenciar serviços do sistema. Por exemplo, para reiniciar o servidor web Apache, você poderia executar:
No entanto, com a introdução do systemd, que se tornou o padrão em muitas distribuições modernas do Linux, agora é recomendado usar systemctl para gerenciar serviços.
Qual a diferença entre service e systemctl?
Ambos os comandos são usados para administrar serviços, mas em sistemas modernos, o service é essencialmente um invólucro (wrapper) para o systemctl.
O comando service era amplamente utilizado em sistemas que rodavam o SysVinit e o Upstart, como versões mais antigas do Debian, CentOS 6 e Ubuntu 14.04. Ele interagia diretamente com os scripts localizados em /etc/init.d/.
Por outro lado, o systemctl trabalha diretamente com o systemd, um gerenciador de sistema e serviços moderno que oferece mais controle sobre processos e suas dependências.
Prova de que service chama systemctl
Se você executar o seguinte comando:
O resultado será algo assim:
Isso confirma que, na verdade, o comando service está apenas chamando o systemctl para executar a operação.
Você também pode inspecionar o conteúdo do comando service com:
Na maioria das distribuições modernas do Linux, ele é simplesmente um script Bash que chama internamente os comandos correspondentes do systemctl.
Como gerenciar serviços corretamente?
De acordo com as melhores práticas atuais, recomenda-se o uso do systemctl, pois ele interage diretamente com o systemd e oferece mais funcionalidades.
No entanto, o comando service ainda está disponível e, na maioria dos casos, o resultado final será o mesmo.
Métodos alternativos para gerenciar serviços
Dependendo do sistema de inicialização, diferentes comandos podem ser usados:
rc-service nginx restart # Para OpenRC
sv restart nginx # Para runit
s6-rc -d change nginx # Para s6
supervisorctl restart nginx # Para Supervisor
Como verificar qual sistema de inicialização está em uso?
Para determinar qual sistema de inicialização seu sistema utiliza, execute:
Isso exibirá o nome do processo em execução com o PID 1, ajudando a identificar se o sistema usa systemd, SysVinit ou outro gerenciador de serviços.
Conclusão
Se o seu sistema usa systemd, é melhor utilizar systemctl, pois ele oferece mais recursos e é a ferramenta nativa. No entanto, o comando service continua sendo uma alternativa conveniente, especialmente em sistemas onde o systemd não está disponível.
FAQ
Posso continuar usando service em vez de systemctl?
Sim, em muitas distribuições modernas do Linux, o comando service funciona como um invólucro (wrapper) do systemctl. No entanto, é recomendado utilizar systemctl diretamente para melhor compatibilidade com o systemd.
Como posso verificar qual sistema de inicialização meu Linux está usando?
Você pode executar o seguinte comando para descobrir o sistema de inicialização:
Se a saída for systemd, seu sistema está usando systemd. Caso contrário, pode estar rodando um sistema de inicialização mais antigo, como SysVinit ou Upstart.
O que acontece se eu usar service em um sistema com systemd?
Em sistemas baseados no systemd, o comando service geralmente atua como uma camada de compatibilidade e traduz os comandos para chamadas systemctl, garantindo que os serviços sejam gerenciados corretamente.
Existem alternativas ao systemctl para gerenciar serviços?
Sim, dependendo do sistema de inicialização em uso, você pode encontrar alternativas como /etc/init.d/, rc-service, sv, s6-rc e supervisorctl.