Como Usar o systemctl - Guia de Gerenciamento de Servicos Linux

Como Usar o systemctl - Guia de Gerenciamento de Servicos Linux

O que voce vai aprender

  • Como gerenciar servicos (Nginx/Apache/SSH etc.) com systemctl no Ubuntu
  • Como resolver problemas de "nao funciona", "precisa reiniciar", "precisa iniciar automaticamente" rapidamente
  • Padroes padrao para resposta a incidentes

Resumo Rapido

Domine estes comandos e voce lidara com a maioria das situacoes:

  • 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 inicio automatico: systemctl enable <service>
  • Desabilitar inicio automatico: systemctl disable <service>

No Ubuntu, a maioria dos comandos requer privilegios de administrador, entao adicione sudo.

Pre-requisitos

  • SO: Ubuntu
  • Ambiente systemd
  • Permissoes: acesso sudo

1. O que e systemctl?

Conclusao: systemctl e o gerenciador de servicos do systemd para iniciar, parar, reiniciar e verificar status.

systemctl e o comando de gerenciamento de servicos do systemd. Voce pode iniciar/parar/reiniciar/verificar status dos servicos em execucao no servidor (ex.: nginx, apache2, ssh, docker).

2. Comece com "status"

Conclusao: Sempre comece a solucao de problemas com systemctl status para ler active ou failed.

A solucao de problemas sempre comeca aqui.

$ sudo systemctl status nginx

Indicadores principais:

  • Active: active (running) -> Em execucao
  • Active: inactive (dead) -> Parado
  • Active: failed -> Falhou (precisa investigacao)

Para status failed, verifique os logs com journalctl -u - esse e o caminho mais rapido.

3. start/stop/restart

Conclusao: Use start, stop, restart para controlar um servico; restart apos alteracoes de configuracao.

3-1. Iniciar

$ sudo systemctl start nginx

3-2. Parar

$ sudo systemctl stop nginx

3-3. Reiniciar

$ sudo systemctl restart nginx

Apos alteracoes de configuracao, use restart. Se o servico suporta reload, voce pode usar reload para aplicar alteracoes sem tempo de inatividade.

4. reload / reload-or-restart

Conclusao: reload aplica configuracao sem tempo de inatividade; reload-or-restart e o fallback seguro.

4-1. reload (apenas para servicos 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 contrario

5. Inicio automatico (enable/disable) - Problema comum de iniciantes

Conclusao: enable configura o inicio automatico na proxima inicializacao; voce ainda precisa de start para executa-lo agora.

"Esta rodando agora, mas para depois de reiniciar" - este e o problema.

5-1. Habilitar inicio automatico

$ sudo systemctl enable nginx

5-2. Desabilitar inicio automatico

$ sudo systemctl disable nginx

5-3. Verificar status de inicio automatico

$ systemctl is-enabled nginx

Saida:

  • enabled: Inicio automatico LIGADO
  • disabled: Inicio automatico DESLIGADO

6. Solucionando "nao funciona"

Conclusao: Verifique o status, leia os logs com journalctl, verifique a sintaxe da configuracao e reinicie.

6-1. Verificar status

$ sudo systemctl status nginx

6-2. Se falhou, verifique os logs (caminho mais rapido)

$ sudo journalctl -u nginx -n 200

Acompanhamento em tempo real:

$ sudo journalctl -u nginx -f

6-3. Verifique a sintaxe da configuracao primeiro (ex.: nginx)

$ sudo nginx -t

Se voce fizer restart com configuracao quebrada, o servico pode ficar parado. Verifique a sintaxe primeiro -> reinicie se OK e a abordagem segura.

7. Encontrando nomes de servicos

Conclusao: Nomes de servicos variam, entao use grep em systemctl list-units --type=service para encontra-los.

Nomes de servicos variam por ambiente (ex.: Apache e apache2 no Ubuntu).

Buscar na lista:

$ systemctl list-units --type=service | grep -i apache

Listar todos (muitos resultados):

$ systemctl list-units --type=service

8. Armadilhas comuns

Conclusao: Rodando mas inacessivel significa verificar portas ou firewall; enable sozinho nao inicia.

8-1. status mostra "running" mas nao consigo acessar

Mesmo que o servico esteja rodando, vinculacao de porta, firewall ou erros de aplicacao podem impedir o acesso. Combine com solucao de problemas de "conectividade de porta (ss/lsof/nc/curl)" para resolucao mais rapida.

8-2. Habilitado mas nao rodando

enable significa "iniciar automaticamente na proxima inicializacao". Para iniciar agora, voce tambem precisa de start.

$ sudo systemctl enable nginx
$ sudo systemctl start nginx

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

Proximas leituras