Como usar o systemctl para listar e gerenciar serviços no Linux: Um guia completo para iniciantes

目次

1. Introdução

Ao usar o Linux, há muitas situações em que você pode querer verificar o status dos serviços ou listar todos os processos em execução. Nesses casos, o comando systemctl é extremamente útil.

Esse comando interage com o “systemd”, o sistema de inicialização e gerenciador de serviços no Linux, oferecendo uma ampla gama de recursos, como verificação do status de serviços (unidades), iniciar, parar, reiniciar e listar serviços.

Especialmente quando se trata de “listar com systemctl”, você pode entender a estrutura do seu sistema sob diferentes perspectivas – não apenas os serviços atualmente ativos, mas também os inativos ou aqueles configurados para iniciar automaticamente.

Esta seção apresentará brevemente os fundamentos do que é o “systemctl” e explicará o que você aprenderá neste artigo.

O que é systemctl?

systemctl é a ferramenta padrão para controlar e verificar várias “unidades”, como serviços, alvos (targets) e pontos de montagem em distribuições Linux baseadas em systemd.

Por exemplo, você o utiliza para iniciar ou parar serviços como Apache (httpd) ou SSH, ou para listar o status desses serviços.

Relação entre systemd e systemctl

systemd é o núcleo do sistema para processos de boot e gerenciamento de serviços no Linux, substituindo ferramentas mais antigas como SysVinit e Upstart. systemctl é o utilitário de linha de comando que interage diretamente com o systemd.

Em outras palavras, se o systemd é o “controlador”, então o systemctl atua como o “operador” que envia instruções.

O que você aprenderá neste artigo

Este artigo responde às seguintes perguntas comuns:

  • Como listar todos os serviços atualmente em execução?
  • Como incluir serviços inativos na lista?
  • Como verificar quais serviços estão habilitados para iniciar automaticamente?
  • Como ler e interpretar os resultados?

Cada exemplo de comando e sua saída são explicados cuidadosamente para iniciantes, portanto sinta‑se à vontade para acompanhar até o final.

2. Como listar serviços com systemctl

Na administração de sistemas Linux, compreender rapidamente a lista de serviços é essencial. Com o comando systemctl, você pode visualizar não apenas os serviços ativos, mas também os inativos e aqueles configurados para iniciar automaticamente.

Aqui, explicaremos três perspectivas principais para listar serviços:

  • Lista de serviços ativos
  • Lista de todos os serviços (incluindo os inativos)
  • Lista de arquivos de unidade de serviço (incluindo as configurações de inicialização)

2.1 Listando serviços atualmente ativos

Para verificar quais serviços estão “em execução” no seu sistema, use este comando básico:

systemctl list-units --type=service

Esse comando exibe uma lista dos serviços atualmente ativos (em execução). A saída inclui as seguintes colunas:

ColumnDescription
UNITName of the service (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService status (e.g., active, inactive, failed)
SUBDetailed status (e.g., running, exited, dead)
DESCRIPTIONBrief description of the service

Essas informações ajudam a entender, por exemplo, se o nginx está em execução ou quais serviços estão ativos.

2.2 Listando todos os serviços, incluindo os inativos

Por padrão, list-units mostra apenas serviços atualmente ativos. Para incluir serviços inativos, adicione a opção --all:

systemctl list-units --type=service --all

Essa opção permite ver serviços no estado “inactive” ou aqueles que nunca foram iniciados antes.

Se quiser refinar ainda mais os resultados, use a opção --state= para filtrar por um status específico:

systemctl list-units --type=service --state=inactive

Isso é útil quando você deseja verificar apenas serviços parados, por exemplo.

2.3 Listando arquivos de unidade de serviço

Se você deseja saber não apenas o status atual, mas também quais serviços estão habilitados e configurados para iniciar automaticamente, use o seguinte comando:

systemctl list-unit-files --type=service

Isso exibe uma lista de arquivos de unidade de serviço (arquivos de configuração) e permite verificar seu status de habilitação (enabled, disabled, etc.).

STATE ValueDescription
enabledAutomatically enabled at boot
disabledNot enabled at boot; must be started manually
staticStarted as a dependency of other units; cannot be enabled/disabled directly
maskedExplicitly disabled and cannot be started (protected)

Revisar essa lista ajuda a entender visualmente quais serviços iniciam na inicialização e se algum foi acidentalmente mascarado.

3. Gerenciamento básico de serviços com systemctl

O comando systemctl não apenas verifica o status dos serviços, mas também permite iniciar, parar, reiniciar e habilitar ou desabilitar serviços. Aqui estão as operações básicas frequentemente usadas na administração de sistemas Linux.

Dominar esses comandos é essencial para a gestão diária de servidores e solução de problemas.

3.1 Iniciando um Serviço

Para iniciar um serviço específico manualmente, use o subcomando start:

sudo systemctl start [service name]

Por exemplo, para iniciar o Apache (httpd):

sudo systemctl start httpd.service

Isso inicia o serviço imediatamente. Se você quiser que ele persista após a reinicialização, use também enable (explicado abaixo).

3.2 Parando um Serviço

Para parar um serviço, use este comando:

sudo systemctl stop [service name]

Exemplo:

sudo systemctl stop sshd.service

O serviço permanecerá parado até que você o inicie explicitamente novamente.

3.3 Reiniciando um Serviço

Para reiniciar um serviço (por exemplo, após alterações de configuração), use:

sudo systemctl restart [service name]

Exemplo:

sudo systemctl restart nginx.service

O reinício sempre para e depois inicia o serviço, independentemente do seu estado atual.

3.4 Verificando o Status do Serviço

Para verificar o status detalhado do serviço, use o subcomando status:

systemctl status [service name]

Exemplo:

systemctl status mysql.service

Isso mostra o estado ativo atual, o ID do processo (PID), um resumo dos logs e mais — muito útil para solução de problemas.

3.5 Habilitando um Serviço para Iniciar Automaticamente

Para garantir que um serviço inicie automaticamente na inicialização, use o subcomando enable:

sudo systemctl enable [service name]

Exemplo:

sudo systemctl enable docker.service

Agora, o serviço será iniciado automaticamente na próxima inicialização do sistema.

3.6 Desabilitando um Serviço de Início Automático

Para desabilitar o início automático, use o comando disable:

sudo systemctl disable [service name]

Exemplo:

sudo systemctl disable cups.service

Isso impede que o serviço seja iniciado na inicialização.

3.7 Verificando se um Serviço está Habilitado

Para verificar se um serviço está habilitado (inicia automaticamente), use is-enabled:

systemctl is-enabled [service name]

Saída de exemplo:

enabled

Isso informa rapidamente a política de inicialização do serviço.

4. Opções Úteis e Técnicas Avançadas para systemctl

O comando systemctl suporta não apenas operações básicas de iniciar/parar, mas também tarefas avançadas de gerenciamento. Aqui estão algumas opções convenientes e técnicas que você deve conhecer.

Aproveitar esses recursos pode melhorar muito a eficiência da administração de serviços Linux.

4.1 Listando Dependências de Serviços

No Linux, alguns serviços dependem de outras unidades (serviços, mounts, targets, etc.). Para verificar dependências, use list-dependencies:

systemctl list-dependencies [service name]

Exemplo:

systemctl list-dependencies nginx.service

Esse comando mostra as unidades relacionadas em formato de árvore — útil para analisar a ordem de inicialização e dependências indiretas.

4.2 Visualizando o Conteúdo do Arquivo de Unidade

Se você quiser conferir os detalhes da configuração de uma unidade, pode exibir o próprio arquivo de unidade:

systemctl cat [service name]

Exemplo:

systemctl cat ssh.service

Isso mostra o caminho do arquivo e seu conteúdo, permitindo que você veja rapidamente quaisquer configurações personalizadas.

4.3 Recarregando Arquivos de Unidade

Se você modificar manualmente um arquivo de unidade, use daemon-reload para aplicar as alterações:

sudo systemctl daemon-reexec

Ou, mais comumente:

sudo systemctl daemon-reload

Isso recarrega os arquivos de unidade no systemd, fazendo com que as mudanças entrem em vigor. Se as configurações não parecerem ser aplicadas, tente este comando primeiro.

4.4 Verificando Logs de Serviço (Complemento)

Embora não seja um comando systemctl, o journalctl é útil para checar os logs dos serviços:

journalctl -u [service name]

Exemplo:

journalctl -u docker.service

Isso permite revisar erros de inicialização e histórico de reinicializações — um passo essencial na solução de problemas.

5. Problemas Comuns e Soluções

Quando gerenciar serviços com systemctl, as coisas nem sempre saem como esperado. Esta seção explica problemas comuns e como resolvê-los.

Esteja preparado para “serviço não inicia” ou “não consegue encontrar a causa” conhecendo estes passos básicos de solução de problemas.

5.1 Solução de Problemas Quando um Serviço Não Inicia

Pode ver erros como:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Para identificar a causa, verifique os seguintes passos em ordem:

  1. Verificar status
    systemctl status [service name]
    
  1. Verificar registos de erros
    journalctl -xe
    
  1. Recarregar ficheiros de unidade Se acabou de editar um ficheiro de unidade, recarregue com:
    sudo systemctl daemon-reload
    
  1. Verificar conflitos de portas Veja se outro processo já está a usar a porta:
    sudo netstat -tulnp | grep [port number]
    

5.2 Como Ler Mensagens de Erro no Comando status

Quando executa systemctl status, vê o estado do serviço, bem como as mensagens de registo mais recentes. Por exemplo:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

Isto permite detetar rapidamente falhas (por exemplo, “Active: failed”, “status=1/FAILURE”) e qual processo devolveu um erro.

A linha Loaded mostra o caminho do ficheiro de unidade, facilitando a identificação do ficheiro de configuração a editar.

5.3 Quando os Serviços Param Inesperadamente

Se um serviço inicia mas para imediatamente, causas comuns incluem:

  • Erros em ficheiros de configuração
  • Conflitos de portas
  • Ficheiros ou diretórios obrigatórios em falta
  • Permissões de execução insuficientes

Para resolver, tente o seguinte:

  • Verificar e validar ficheiros de configuração (por exemplo, nginx -t ou apachectl configtest)
  • Seguir registos detalhados com journalctl -u [service name]
  • Garantir que diretórios obrigatórios (por exemplo, /var/run/xxx) existam; crie-os se necessário

5.4 Incapaz de Iniciar Serviços no Estado masked

Se vir este erro:

Failed to start example.service: Unit example.service is masked.

O serviço está no estado masked (completamente desativado e bloqueado de iniciar). Desmascare com:

sudo systemctl unmask [service name]

Depois, pode iniciar o serviço como de costume.

6. Resumo

A gestão de serviços no Linux é uma parte essencial das operações diárias do sistema. O comando systemctl desempenha um papel central, permitindo-lhe verificar listas de serviços e gerenciá-los de forma eficiente.

Este artigo explicou os seguintes pontos usando a palavra-chave “systemctl list”:

O Que Pode Fazer com o Comando systemctl (Revisão)

  • Verificar lista de serviços
  • Mostrar serviços atualmente ativos ( list-units --type=service )
  • Listar todos os serviços, incluindo os inativos (opções --all ou --state=)
  • Mostrar ficheiros de unidade de serviço e o seu estado de arranque ( list-unit-files )
  • Operações básicas de serviço
  • Iniciar, parar, reiniciar e verificar estado (start / stop / restart / status)
  • Ativar/desativar arranque automático (enable / disable / is-enabled)
  • Operações avançadas e solução de problemas
  • Verificar dependências, ver ficheiros de unidade, recarregar configurações
  • Investigar erros usando registos e verificações de estado

Melhores Práticas para a Gestão de Serviços

  • Verificar sempre o estado antes de fazer alterações (comando status)
  • Conhecer o estado de arranque automático (comando is-enabled)
  • Após fazer alterações, executar sempre daemon-reload
  • Para problemas, verificar registos com journalctl

Verificações meticulosas como estas garantem uma entrega estável de serviços e uma solução de problemas mais rápida na administração de sistemas Linux.

Para Aprendizagem Adicional

Se quiser aprender mais, considere explorar tópicos como:

  • alvos do systemd (e diferenças em relação aos runlevels)
  • Tarefas agendadas com systemd-timer
  • Como criar e gerenciar arquivos de unidade personalizados

7. Perguntas Frequentes (FAQ)

Esta seção resume perguntas frequentes e respostas sobre o comando systemctl e a listagem de serviços. Mesmo que você esteja confortável com o básico, revise estas para referência rápida.

Q1. Qual a diferença entre os comandos systemctl e service?

A1.
systemctl é o comando de gerenciamento de serviços baseado no systemd e é o padrão na maioria das distribuições Linux modernas (Ubuntu, CentOS, Fedora, etc.).
Em contraste, service provém do antigo sistema SysVinit. Embora às vezes seja mantido por compatibilidade, systemctl é recomendado para ambientes systemd.

Q2. Qual a diferença entre list-units e list-unit-files?

A2.

  • list-units exibe unidades atualmente carregadas (ativas ou usadas anteriormente).
  • list-unit-files lista todos os arquivos de unidade e seu status de habilitação/desabilitação. Pense nisso como a diferença entre “o que está rodando agora” e “o que está configurado para rodar”.

Q3. Posso iniciar um serviço no estado “static”?

A3.
Sim, você pode iniciar manualmente um serviço no estado static, mas não pode enable‑lo para iniciar automaticamente. Isso ocorre porque serviços estáticos são projetados para ser iniciados como dependências de outras unidades.

Q4. Não consigo iniciar um serviço mascarado. O que devo fazer?

A4.
masked significa “completamente desativado”. Desmascarar com:

sudo systemctl unmask [service name]

Depois disso, você pode iniciá‑lo normalmente.

Q5. Existe uma interface gráfica para listar o status dos serviços?

A5.
Dependendo da sua distribuição, ferramentas como gnome-system-monitor, KSysGuard ou Cockpit podem permitir que você verifique o status dos serviços via GUI. Contudo, para operações avançadas, systemctl continua sendo o método mais confiável.

Q6. Onde devo colocar arquivos de unidade personalizados?

A6.
Normalmente, coloque‑os em /etc/systemd/system/. Após editar, não se esqueça de executar:

sudo systemctl daemon-reload

Então gerencie como de costume com start ou enable.

侍エンジニア塾