1. O que são serviços no Linux?
Serviços são a base de qualquer distribuição Linux moderna. Quer rodar seu servidor web no Nginx? Inicie e configure o serviço correspondente. Quer que o banco de dados MySQL funcione? De novo, é um serviço. Até mesmo seu amado cron, que vai rodar aqueles scripts bash incríveis, também é um serviço. Gerenciar serviços é uma habilidade que você com certeza vai usar não só no trabalho, mas também nos projetos pessoais. Aliás, nas entrevistas, a pergunta "E como você para um serviço?" aparece mais vezes do que você poderia imaginar.
Definição e papel
Um serviço no Linux é um programa que roda em segundo plano (ou seja, como daemon, do inglês "daemon"). Esses programas podem ser iniciados automaticamente durante o boot do sistema ou manualmente quando necessário. Eles são responsáveis por realizar tarefas específicas, como:
- Atender requisições web (por exemplo,
nginx/apache). - Suporte para acesso remoto (por exemplo,
openssh). - Rodar tarefas agendadas (por exemplo,
cron).
Basicamente, os serviços são os "trabalhadores incansáveis" que realizam tarefas invisíveis ao usuário, mas absolutamente críticas para o funcionamento do sistema.
2. Fundamentos de gerenciamento de serviços com systemctl
O que é systemctl?
Vamos começar pelo básico: systemctl é o comando principal para gerenciar serviços em sistemas que utilizam o systemd. Se a sua máquina roda uma distribuição Linux moderna (como Ubuntu, Fedora ou CentOS), é provável que esteja usando systemd.
Funções principais
- Iniciar um serviço: colocar o serviço em funcionamento caso esteja desativado.
- Parar um serviço: encerrar a execução do serviço.
- Reiniciar um serviço: primeiro parar e depois iniciar o serviço novamente.
- Verificar o status: checar o estado atual do serviço.
A estrutura básica do comando é:
sudo systemctl [ação] [nome_do_serviço]
Iniciar e parar um serviço
Iniciar:
Imagina que você instalou o servidor web nginx e quer colocá-lo em funcionamento. Para isso, você usa o comando start:
sudo systemctl start nginx
Parar:
Mas e se você quiser desativar o servidor web temporariamente? O comando stop vai te ajudar:
sudo systemctl stop nginx
Reiniciar um serviço
Reiniciar serve para aplicar mudanças na configuração ou apenas "dar uma refrescada" no serviço (basicamente, é como dar um café pra ele e lembrar que precisa trabalhar). Use o comando restart:
sudo systemctl restart nginx
Verificar o status
Você não tem certeza se o nginx está funcionando? O comando status fornece informações detalhadas:
sudo systemctl status nginx
O resultado exibirá:
- O identificador único de processo (PID).
- Tempo de inicialização.
- Logs de erros, caso algo dê errado.
Exemplo de saída:
nginx.service - A high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
...
3. Inicialização Automática de Serviços
Habilitar Inicialização Automática
Para que o serviço seja iniciado automaticamente toda vez que o sistema for iniciado, use:
sudo systemctl enable nginx
Desabilitar Inicialização Automática
E se você quiser que o serviço não seja mais iniciado durante a inicialização:
sudo systemctl disable nginx
Aqui está uma maneira simples de verificar se a inicialização automática está habilitada:
systemctl is-enabled nginx
Prática de Gerenciamento de Serviços
Vamos realizar um exercício completo usando o exemplo do serviço cron.
Inicie o serviço
cron:sudo systemctl start cronVerifique se está funcionando:
sudo systemctl status cronCertifique-se de que o status seja "active (running)".
Pare o serviço
cron:sudo systemctl stop cronVerifique se o status mudou para "inactive (dead)".
Reinicie o serviço
cron:sudo systemctl restart cron
4. Diferença entre serviços ativos, desativados e com falha
Os serviços podem ter diferentes estados. Aqui estão os principais tipos:
- Active (running) — o serviço está rodando ativamente; tudo certo.
- Inactive (dead) — o serviço está parado.
- Failed — ocorreu um erro ao iniciar, parar ou executar o serviço.
Para encontrar rapidamente todos os serviços que estão com erro, use:
systemctl --failed
5. Erros típicos e armadilhas
Erro: Unit not found
Se aparecer a mensagem algo como:
Failed to start nginx.service: Unit nginx.service not found.
Isso pode significar que o serviço necessário não está instalado ou o nome dele foi informado de forma errada. Verifique o nome correto:
systemctl list-unit-files | grep nginx
Erro de permissão
Se você esqueceu de executar o comando com permissões sudo, provavelmente receberá uma mensagem de acesso negado:
Permission denied
Não se esqueça de adicionar sudo antes dos comandos systemctl.
6. Aplicação em projetos reais
Gerenciar serviços é algo que você vai usar em qualquer papel relacionado ao Linux:
- DevOps: automatização e gerenciamento de todos os serviços do sistema.
- Administração de servidores: monitorar o status de servidores web, bancos de dados e outros serviços.
- Desenvolvimento no Linux: você precisa entender como gerenciar serviços relacionados ao seu projeto (por exemplo, iniciar servidores de desenvolvimento).
Portanto, conhecer o comando systemctl não é apenas uma habilidade abstrata, mas uma ferramenta real de trabalho. Exemplo: precisa reiniciar um servidor web após atualizar o site? Um comando sudo systemctl restart nginx — e problema resolvido!
GO TO FULL VERSION