15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
31.10.2024

Comandos Systemctl: Como Reiniciar, Recarregar e Parar Serviços no Linux

Gerir serviços de forma eficiente é uma das competências mais críticas para qualquer administrador de sistemas Linux. Quer esteja a executar um servidor web de alto tráfego num plano de VPS Hosting ou a manter um ambiente de Servidor Dedicado, compreender como controlar serviços do sistema usando systemctl é absolutamente essencial. Este guia abrangente cobre tudo o que precisa de saber sobre reiniciar, recarregar e parar serviços em Linux usando systemd e systemctl.

O que é systemd e por que é importante?

systemd é o sistema init padrão e gestor de serviços utilizado em praticamente todas as distribuições Linux modernas, incluindo Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux e Fedora. Substituiu sistemas init mais antigos como SysVinit e Upstart, trazendo melhorias significativas na forma como o Linux arranca e gere processos.

Características principais do systemd

  • Arranque de serviços em paralelo — Reduz drasticamente os tempos de arranque ao iniciar serviços simultaneamente
  • Ativação de serviços sob demanda — Os serviços podem ser lançados apenas quando necessário, conservando recursos do sistema
  • Gestão de dependências — Trata automaticamente das dependências e ordenação de serviços
  • Registo centralizado — Integra-se com journald para gestão de registos unificada e estruturada
  • Controlo de recursos baseado em Cgroup — Rastreia e limita a utilização de CPU, memória e I/O por serviço
  • Ativação de Socket e D-Bus — Permite padrões avançados de comunicação entre processos

Compreender systemd não é apenas académico — afeta diretamente a estabilidade, desempenho e segurança do seu ambiente Linux.

O que é systemctl?

systemctl é a interface de linha de comando principal para interagir com systemd. Permite aos administradores:

  • Iniciar, parar, reiniciar e recarregar serviços
  • Ativar ou desativar serviços no arranque
  • Verificar o estado do serviço e ver registos
  • Gerir alvos do sistema (níveis de execução)
  • Recarregar a configuração do daemon systemd

Todos os comandos systemctl que modificam o estado do sistema requerem privilégios de root ou acesso sudo.

Comandos systemctl principais para gestão de serviços

1. Reiniciar um serviço

Reiniciar um serviço para-o completamente e depois inicia-o novamente. Esta é a operação padrão quando:

  • Fez alterações de configuração que requerem um reinício completo do processo
  • Um serviço falhou ou ficou sem resposta
  • Precisa de aplicar ficheiros binários atualizados após uma atualização de pacote

Sintaxe:

sudo systemctl restart <service_name>

Exemplo — Reiniciar o servidor web Nginx:

sudo systemctl restart nginx

Exemplo — Reiniciar o servidor web Apache:

sudo systemctl restart apache2

Exemplo — Reiniciar a base de dados MySQL/MariaDB:

sudo systemctl restart mysql

> Importante: Reiniciar um serviço causa uma breve interrupção. Para ambientes de produção, considere usar reload quando suportado para evitar tempo de inatividade.

2. Recarregar um serviço

Recarregar instrui um serviço em execução a re-ler os seus ficheiros de configuração sem parar o processo. Isto é ideal para aplicar alterações de configuração com zero tempo de inatividade.

Sintaxe:

sudo systemctl reload <service_name>

Exemplo — Recarregar Nginx após editar a sua configuração:

sudo systemctl reload nginx

Exemplo — Recarregar daemon SSH após modificar sshd_config:

sudo systemctl reload sshd

> Nota: Nem todos os serviços suportam a operação reload. Se um serviço não a implementar, systemctl retornará um erro. Nesses casos, use restart em seu lugar.

Dica profissional — Use reload-or-restart para máxima compatibilidade:

sudo systemctl reload-or-restart <service_name>

Este comando tenta primeiro um recarregamento. Se o serviço não suportar recarregamento, volta automaticamente para um reinício completo — tornando-o a opção mais segura para implementações com scripts e automação.

3. Parar um serviço

Parar um serviço termina-o imediatamente. Use isto quando precisa de colocar um serviço offline para manutenção, resolução de problemas ou reconfiguração.

Sintaxe:

sudo systemctl stop <service_name>

Exemplo — Parar o servidor web Nginx:

sudo systemctl stop nginx

Exemplo — Parar o serviço de firewall:

sudo systemctl stop ufw

> Aviso: Parar um serviço crítico (como sshd num servidor remoto) pode bloqueá-lo fora do seu sistema. Certifique-se sempre de que tem um método de acesso alternativo, como uma consola ou gestão fora de banda, antes de parar serviços essenciais.

4. Iniciar um serviço

Se um serviço não está atualmente em execução, use o comando start para o lançar.

Sintaxe:

sudo systemctl start <service_name>

Exemplo:

sudo systemctl start nginx

5. Ativar um serviço no arranque

Ativar um serviço cria as ligações simbólicas necessárias para que systemd o inicie automaticamente durante o arranque do sistema.

Sintaxe:

sudo systemctl enable <service_name>

Exemplo:

sudo systemctl enable nginx

Ativar e iniciar simultaneamente (recomendado):

sudo systemctl enable --now nginx

6. Desativar um serviço no arranque

Desativar um serviço impede que ele inicie automaticamente, mas não o para se estiver atualmente em execução.

Sintaxe:

sudo systemctl disable <service_name>

Exemplo:

sudo systemctl disable bluetooth

Desativar e parar simultaneamente:

sudo systemctl disable --now bluetooth

7. Verificar o estado do serviço

O comando status é um dos comandos systemctl mais frequentemente utilizados. Fornece um instantâneo em tempo real do estado de um serviço, incluindo entradas de registo recentes.

Sintaxe:

sudo systemctl status <service_name>

Exemplo — Verificar o estado do Nginx:

sudo systemctl status nginx

Saída de exemplo:

● 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 2024-01-15 10:23:45 UTC; 2h 34min ago
       Docs: man:nginx(8)
    Process: 1234 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 1235 (nginx)
      Tasks: 3 (limit: 4915)
     Memory: 6.2M
        CPU: 45ms
     CGroup: /system.slice/nginx.service
             ├─1235 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─1236 "nginx: worker process"

A saída inclui:

  • Loaded — Se o ficheiro de unidade está carregado e se está ativado no arranque
  • Active — Estado de execução atual (active (running), inactive (dead), failed, etc.)
  • Main PID — O ID do processo principal do serviço
  • Memory/CPU — Métricas de consumo de recursos
  • CGroup — A hierarquia do grupo de controlo
  • Recent logs — Últimas entradas de diário para diagnóstico rápido

Comandos systemctl avançados

Verificar se um serviço está ativo ou ativado

Para uso em scripts e automação, estes comandos retornam códigos de saída simples de tipo booleano:

# Check if a service is currently running
systemctl is-active nginx

# Check if a service is enabled at boot
systemctl is-enabled nginx

# Check if a service has failed
systemctl is-failed nginx

Listar todos os serviços

# List all loaded and active units
systemctl list-units --type=service

# List all installed unit files and their states
systemctl list-unit-files --type=service

# List only failed services
systemctl --failed

Recarregar o daemon systemd

Após criar ou modificar ficheiros de unidade, deve recarregar o daemon systemd para reconhecer as alterações:

sudo systemctl daemon-reload

Mascarar e desmascarar um serviço

Mascarar um serviço impede que seja iniciado manualmente ou automaticamente — mesmo por outros serviços:

# Prevent a service from ever starting
sudo systemctl mask <service_name>

# Re-enable a masked service
sudo systemctl unmask <service_name>

Referência rápida: Folha de dicas de comandos systemctl

ComandoDescrição
systemctl start <service>Iniciar um serviço parado
systemctl stop <service>Parar um serviço em execução
systemctl restart <service>Parar e reiniciar um serviço
systemctl reload <service>Recarregar configuração sem parar
systemctl reload-or-restart <service>Recarregar se suportado, caso contrário reiniciar
systemctl enable <service>Ativar serviço no arranque
systemctl disable <service>Desativar serviço no arranque
systemctl enable --now <service>Ativar e iniciar imediatamente
systemctl disable --now <service>Desativar e parar imediatamente
systemctl status <service>Mostrar estado do serviço e registos
systemctl is-active <service>Verificar se o serviço está em execução
systemctl is-enabled <service>Verificar se o serviço inicia no arranque
systemctl is-failed <service>Verificar se o serviço falhou
systemctl list-units --type=serviceListar todos os serviços ativos
systemctl --failedListar todos os serviços falhados
systemctl daemon-reloadRecarregar ficheiros de unidade systemd
systemctl mask <service>Impedir completamente que o serviço seja iniciado
systemctl unmask <service>Remover máscara do serviço

Casos de uso práticos para administradores de servidor

Cenário 1: Aplicar alterações de configuração do Nginx

Editou /etc/nginx/nginx.conf no seu servidor web. Para aplicar alterações sem descartar conexões ativas:

# First, test the configuration syntax
sudo nginx -t

# If the test passes, reload gracefully
sudo systemctl reload nginx

Cenário 2: Recuperar um serviço falhado

Um serviço falhou e mostra um estado failed:

# Check what went wrong
sudo systemctl status myapp.service

# View full logs for the service
sudo journalctl -u myapp.service -n 50 --no-pager

# Restart the service
sudo systemctl restart myapp.service

Cenário 3: Configurar um novo serviço após implementação

Após implementar uma nova aplicação com um ficheiro de unidade personalizado:

# Reload systemd to recognize the new unit file
sudo systemctl daemon-reload

# Enable and start the service in one command
sudo systemctl enable --now myapp.service

# Verify it's running correctly
sudo systemctl status myapp.service

Diferença entre restart, reload e stop — Num relance

AçãoProcesso parado?Tempo de inatividade?Caso de uso
stopSimSimManutenção, resolução de problemas
restartSim, depois reiniciadoBreveAlterações de configuração que requerem reinício completo
reloadNãoNenhumAlterações de configuração com zero tempo de inatividade
reload-or-restartApenas se necessárioMínimoAutomação e scripting seguro

Gerir serviços em diferentes ambientes de alojamento

Os comandos systemctl abordados neste guia aplicam-se universalmente em ambientes de alojamento

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar