Como Usar o systemctl - Guia de Gerenciamento de Serviços Linux

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 status e dizer se um serviço está rodando.
  • Você escolhe entre start, stop, restart e reload sabendo o que cada um altera.
  • Você configura o início automático como pretendido, porque sabe a diferença entre enable e start.

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ção
  • Active: inactive (dead) -> Parado
  • Active: failed -> Falhou (precisa investigação)
  • O enabled / disabled dentro de Loaded: 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 LIGADO
  • disabled: 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> reporta active (running)
  • [ ] systemctl is-enabled <service> mostra o valor pretendido (enabled / disabled)
  • [ ] journalctl -u <service> -n 50 nã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

Próximas leituras