Como Usar o systemctl - Guia de Gerenciamento de Serviços Linux
O que você vai conseguir fazer
- Ler o estado de um serviço na saída de systemctl status
- Escolher com segurança entre start, stop, restart e reload
- Configurar o início automático distinguindo enable de start
Pré-requisitos (leia estes primeiro)
O que você vai aprender
- Você consegue ler a saída de
systemctl statuse dizer se um serviço está rodando. - Você escolhe entre
start,stop,restartereloadsabendo o que cada um altera. - Você configura o início automático como pretendido, porque sabe a diferença entre
enableestart.
Resumo Rápido
Domine estes comandos e você lidará com a maioria das situações:
- Verificar status:
systemctl status <service> - Iniciar:
systemctl start <service> - Parar:
systemctl stop <service> - Reiniciar:
systemctl restart <service> - Recarregar config:
systemctl reload <service>(se suportado) - Habilitar início automático:
systemctl enable <service> - Desabilitar início automático:
systemctl disable <service>
No Ubuntu, a maioria dos comandos requer privilégios de administrador, então adicione sudo. O sudo significa "executar apenas este comando como administrador".
Pré-requisitos
- SO: Ubuntu
- Ambiente systemd
- Permissões: acesso
sudo
1. O que é systemctl?
Conclusão: systemctl é o gerenciador de serviços do systemd para iniciar, parar, reiniciar e verificar status.
systemctl é o comando de gerenciamento de serviços do systemd.
Você pode iniciar/parar/reiniciar/verificar status dos serviços em execução no servidor (ex.: nginx, apache2, ssh, docker).
Antes de tudo, quatro termos.
| Termo | Significado em uma linha | Observação |
|---|---|---|
| systemd | O componente que inicializa o Linux e gerencia seus serviços | Também chamado de "sistema init" |
| daemon | Programa que roda em segundo plano, sem interface | Também chamado de "processo residente" |
| serviço | O nome que o systemd dá a um daemon que ele gerencia | Este artigo usa "serviço" em todo o texto |
| unidade | O termo geral para tudo que o systemd gerencia | Um serviço é um tipo de unidade, nomeado como nginx.service |
"Daemon", "serviço" e "unidade" se misturam no dia a dia.
Tudo sobre o que o systemctl age é uma unidade. Um serviço é um tipo de unidade, então nginx e nginx.service significam a mesma coisa.
2. Comece com "status"
Conclusão: Sempre comece a solução de problemas com systemctl status para ler active ou failed.
A solução de problemas sempre começa aqui.
O status apenas lê o estado. Ele nunca inicia nem para nada, então você pode executá-lo quantas vezes quiser.
$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2025-12-15 10:12:03 UTC; 2h 5min ago
Main PID: 1234 (nginx)
Tasks: 3 (limit: 4610)
Memory: 5.6M
CGroup: /system.slice/nginx.service
├─1234 nginx: master process /usr/sbin/nginx -g daemon on;
└─1235 nginx: worker process
Indicadores principais:
Active: active (running)-> Em execuçãoActive: inactive (dead)-> ParadoActive: failed-> Falhou (precisa investigação)- O
enabled/disableddentro deLoaded: loaded (...; enabled; ...)-> a configuração de início automático (ver seção 5)
O Active: é o estado de agora; o enabled da linha Loaded: é a configuração para a próxima inicialização.
Os dois são independentes, então leia ambos em uma única chamada de status.
Para status failed, verifique os logs com journalctl -u - esse é o caminho mais rápido.
3. start/stop/restart
Conclusão: Use start, stop, restart para controlar um serviço; restart após alterações de configuração.
Estes comandos mudam o estado do servidor. Confira o que muda e como desfazer antes de executá-los.
| Comando | O que muda | Como desfazer | Forma mais segura de testar |
|---|---|---|---|
start |
Um serviço parado passa a rodar | stop para novamente |
Registre o estado atual com status |
stop |
O serviço cai na hora (um site fica inacessível) | start traz de volta |
Faça quando ninguém estiver usando |
restart |
Breve indisponibilidade e o serviço volta | Reverta a configuração e restart |
Rode antes a verificação de sintaxe |
3-1. Iniciar
$ sudo systemctl start nginx
3-2. Parar
$ sudo systemctl stop nginx
O stop tem efeito no instante em que você o executa.
Em um servidor de produção, confirme quem depende do serviço antes de pará-lo.
Se parou por engano, sudo systemctl start <service> traz o serviço de volta.
3-3. Reiniciar
$ sudo systemctl restart nginx
Após alterações de configuração, use restart.
Se o serviço suporta reload, você pode usar reload para aplicar alterações sem tempo de inatividade.
4. reload / reload-or-restart
Conclusão: reload aplica configuração sem tempo de inatividade; reload-or-restart é o fallback seguro.
O reload rele o arquivo de configuração sem parar o serviço.
Nem todo serviço suporta isso.
4-1. reload (apenas para serviços que suportam)
$ sudo systemctl reload nginx
4-2. reload-or-restart (fallback seguro)
$ sudo systemctl reload-or-restart nginx
- Usa reload se suportado
- Volta para restart caso contrário
4-3. reload e daemon-reload são coisas diferentes
Os nomes se parecem e essa é a dupla que mais se confunde. O que cada um rele é completamente diferente.
| Comando | O que rele | Quando usar |
|---|---|---|
systemctl reload <service> |
A configuração do próprio serviço (nginx.conf) |
Depois de editar um arquivo de config |
systemctl daemon-reload |
Os arquivos de unidade do systemd (*.service) |
Depois de editar um arquivo de unidade |
Se você editou um arquivo de unidade (em /etc/systemd/system/, por exemplo) e só o restart não muda nada, a causa é essa.
$ sudo systemctl daemon-reload $ sudo systemctl restart nginx
O daemon-reload apenas faz o systemd reler as definições; ele não reinicia o serviço. Ainda é preciso o restart para aplicar.
5. Início automático (enable/disable) - Problema comum de iniciantes
Conclusão: enable configura o início automático na próxima inicialização; você ainda precisa de start para executá-lo agora.
"Está rodando agora, mas para depois de reiniciar" - este é o problema.
O enable e o disable mudam apenas se o serviço sobe na próxima inicialização.
Eles não afetam o serviço que está rodando agora.
5-1. Habilitar início automático
$ sudo systemctl enable nginx
5-2. Desabilitar início automático
$ sudo systemctl disable nginx
Esquecer que você executou disable transforma a próxima reinicialização em uma indisponibilidade.
Para desfazer, execute sudo systemctl enable <service>.
O systemctl is-enabled <service> lê a configuração atual sem alterar nada.
5-3. Verificar status de início automático
$ systemctl is-enabled nginx
enabled
O que a saída significa:
enabled: Início automático LIGADOdisabled: Início automático DESLIGADO
6. Solucionando "não funciona"
Conclusão: Verifique o status, leia os logs com journalctl, verifique a sintaxe da configuração e reinicie.
6-1. Verificar status
$ sudo systemctl status nginx
6-2. Se falhou, verifique os logs (caminho mais rápido)
$ sudo journalctl -u nginx -n 200
O journalctl lê os logs coletados pelo systemd.
O -u limita a saída a uma unidade e o -n 200 limita as últimas 200 linhas.
Acompanhamento em tempo real:
$ sudo journalctl -u nginx -f
6-3. Verifique a sintaxe da configuração primeiro (ex.: nginx)
$ sudo nginx -t
O nginx -t apenas lê o arquivo de configuração; ele não muda como o serviço roda.
Se você fizer restart com configuração quebrada, o serviço pode ficar parado.
Verifique a sintaxe primeiro -> reinicie se OK é a abordagem segura.
7. Encontrando nomes de serviços
Conclusão: Nomes de serviços variam, então use grep em systemctl list-units --type=service para encontrá-los.
Nomes de serviços variam por ambiente (ex.: Apache é apache2 no Ubuntu).
Buscar na lista:
$ systemctl list-units --type=service | grep -i apache
Listar todos (muitos resultados):
$ systemctl list-units --type=service
O list-units apenas imprime uma lista. Ele não altera o estado dos serviços.
8. Armadilhas comuns
Conclusão: Rodando mas inacessível significa verificar portas ou firewall; enable sozinho não inicia.
8-1. status mostra "running" mas não consigo acessar
Mesmo que o serviço esteja rodando, vinculação de porta, firewall ou erros de aplicação podem impedir o acesso.
O firewall permite ou bloqueia tráfego; no Ubuntu costuma ser o ufw.
Combine com solução de problemas de "conectividade de porta (ss/lsof/nc/curl)" para resolução mais rápida.
8-2. Habilitado mas não rodando
enable significa "iniciar automaticamente na próxima inicialização".
Para iniciar agora, você também precisa de start.
$ sudo systemctl enable nginx $ sudo systemctl start nginx
9. Checklist de conclusão
Conclusão: Após qualquer mudança, verifique estado, início automático e logs antes de encerrar.
- [ ]
systemctl status <service>reportaactive (running) - [ ]
systemctl is-enabled <service>mostra o valor pretendido (enabled/disabled) - [ ]
journalctl -u <service> -n 50não mostra novos erros - [ ] Se você parou ou reiniciou, os usuários voltam a acessar o serviço
Resumo (Modelo para Copiar e Colar)
# Verificar status sudo systemctl status <service> # Iniciar/Parar/Reiniciar sudo systemctl start <service> sudo systemctl stop <service> sudo systemctl restart <service> # Recarregar configuracao (se suportado) sudo systemctl reload <service> sudo systemctl reload-or-restart <service> # Inicio automatico sudo systemctl enable <service> sudo systemctl disable <service> systemctl is-enabled <service> # Logs sudo journalctl -u <service> -n 200 sudo journalctl -u <service> -f