Como Listar Serviços em Execução no Linux: Um Guia Completo para Todos os Sistemas Init
Resposta Rápida: Como Listar Serviços em Execução no Linux
Para listar os serviços em execução no Linux, use um destes comandos, conforme o seu sistema init:
- systemd (Ubuntu 24.04, Debian 12, CentOS/RHEL 9, Fedora 40+ e a maioria das distros modernas em 2026):
Ou, para listar todas as unidades de serviço, independentemente do estado:systemctl list-units --type=service --state=runningsystemctl --type=service - SysVinit / sistemas mais antigos (ou para incluir scripts init legados):
service --status-all
O systemd é o sistema init padrão em praticamente todas as distribuições Linux populares da atualidade, então o systemctl list-units --type=service --state=running é a resposta na grande maioria dos casos. Ele exibe uma tabela dos serviços atualmente ativos com os respectivos estados LOAD, ACTIVE e SUB. Se o systemctl não for encontrado, é porque o seu sistema não usa o systemd — nesse caso, recorra ao service --status-all (SysVinit) ou ao rc-status (OpenRC).
O restante deste guia explica cada método em detalhes, incluindo como filtrar por estado, verificar os serviços que iniciam com o sistema e localizar serviços por porta.
Introdução
Os serviços do Linux são processos em segundo plano que rodam continuamente para executar tarefas do sistema, como gerenciar redes, tratar os logins dos usuários ou rodar servidores web. Esses serviços podem ser gerenciados por meio de várias ferramentas, conforme a distribuição Linux e o sistema init em uso. Em 2026, o systemd é o sistema init padrão em quase todas as principais distribuições, então a maior parte deste guia se concentra no comando systemctl.
Saber como listar os serviços em execução é essencial para administradores de sistemas e desenvolvedores. Isso ajuda em:
- Solução de problemas – Verificar se um serviço crítico está em execução ou se falhou.
- Monitoramento de desempenho – Identificar os serviços que consomem muitos recursos.
- Auditoria de segurança – Garantir que apenas os serviços necessários estejam ativos.
Usando systemctl (Para Sistemas Baseados em Systemd)
A maioria das distribuições Linux modernas usa o systemd como sistema init. Isso inclui versões atuais de 2026, como Ubuntu (da 16.04 à 24.04 LTS e posteriores), Debian (do 8 ao 12 "Bookworm" e posteriores), Fedora (40+), CentOS Stream / RHEL / Rocky Linux / AlmaLinux (do 7 ao 9 e posteriores) e openSUSE. O comando systemctl é a principal ferramenta para gerenciar e listar serviços em todos esses sistemas.
Verificando o Status de um Serviço Específico
Para verificar se um determinado serviço está em execução, use:
systemctl status <service-name>
Por exemplo, para verificar se o servidor web nginx está em execução:
systemctl status nginx
A saída mostrará se o serviço está ativo (em execução), inativo ou com falha, além dos logs para depuração.
Listando Todos os Serviços Ativos
Para listar todos os serviços em execução, use:
systemctl list-units --type=service --state=running
Este comando exibe uma tabela com todos os serviços atualmente em execução, junto com o status de cada um.
Listando Todos os Serviços (Incluindo os Inativos)
Se você quiser ver todos os serviços, estejam eles em execução ou não:
systemctl list-units --type=service
Isso incluirá os serviços que estão ativos, inativos, com falha ou em outros estados.
Filtrando Serviços por Estado
Você pode filtrar os serviços pelo estado deles usando:
systemctl list-units --type=service --state=failed
Isso listará apenas os serviços com falha, o que pode ser útil na solução de problemas.
Listando Serviços Habilitados na Inicialização
Para verificar quais serviços estão configurados para iniciar automaticamente junto com o sistema:
systemctl list-unit-files --type=service | grep enabled
Exemplo de Saída
Uma saída típica do systemctl list-units --type=service --state=running pode ser parecida com esta:
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
networking.service loaded active running Raise network interfaces
ssh.service loaded active running OpenBSD Secure Shell server
systemd-logind.service loaded active running Login Service
Resumo
- Use
systemctl status <service>para verificar o status de um único serviço. - Use
systemctl list-units --type=service --state=runningpara listar os serviços ativos. - Use
systemctl list-units --type=servicepara ver todos os serviços. - Use
systemctl list-unit-files --type=servicepara ver os serviços habilitados na inicialização.
Usando ps e grep para Processos em Execução
Se você quiser listar os serviços em execução sem depender do systemctl ou de outras ferramentas de gerenciamento de serviços, pode usar o ps (status de processos) junto com o grep para encontrar processos específicos.
Esse método é útil quando:
- Você está trabalhando em um sistema Linux enxuto, que não tem os comandos
systemctlouservice. - Você quer verificar se um determinado processo está em execução, independentemente do sistema init.
Listando Todos os Processos em Execução
O comando ps aux exibe todos os processos em execução no sistema:
ps aux
Isso gerará uma lista extensa de todos os processos em execução, incluindo os IDs de processo (PIDs), o uso de CPU, o uso de memória e o nome dos comandos.
Buscando um Serviço Específico
Para verificar se um determinado serviço está em execução, use ps aux | grep <service-name>:
ps aux | grep nginx
Isso exibirá as linhas que contêm "nginx", indicando se ele está em execução. A saída pode ser parecida com esta:
root 1034 0.0 0.3 49536 3412 ? Ss 12:34 0:00 nginx: master process /usr/sbin/nginx
www-data 1035 0.0 0.2 49536 2824 ? S 12:34 0:00 nginx: worker process
user 2045 0.0 0.0 14856 900 pts/0 S+ 12:35 0:00 grep --color=auto nginx
Nesse exemplo:
- As duas primeiras linhas indicam que o serviço nginx está em execução.
- A última linha (
grep --color=auto nginx) é o próprio comandogrep. Você pode excluí-la usando:
ps aux | grep nginx | grep -v grep
Exibindo Processos em Formato Hierárquico
Para uma visualização mais estruturada, use:
ps fax
Isso mostra uma estrutura em árvore dos processos em execução, o que facilita identificar quais serviços estão rodando e quais são os seus processos filhos.
Encontrando Serviços por Porta
Se você suspeitar que um serviço está rodando em uma porta específica, mas não souber o nome dele, use:
netstat -tulnp | grep :80
ou, se o netstat não estiver disponível:
ss -tulnp | grep :80
Isso listará o processo que está usando a porta 80 (comumente usada por servidores web como o Nginx ou o Apache).
Resumo
- Use
ps auxpara listar todos os processos em execução. - Use
ps aux | grep <service-name>para verificar um serviço específico. - Use
ps faxpara uma visualização em árvore dos processos. - Use
netstat -tulnpouss -tulnppara encontrar serviços rodando em portas específicas.
FAQ (Perguntas Frequentes)
1. Como faço para verificar se um serviço está em execução no Linux?
Você pode usar métodos diferentes conforme a sua distribuição Linux:
- Para sistemas baseados em systemd:
systemctl status <service-name> - Para sistemas baseados em SysVinit:
service <service-name> status - Usando ps e grep:
ps aux | grep <service-name>
2. Como faço para listar todos os serviços em execução?
- Para sistemas baseados em systemd:
systemctl list-units --type=service --state=running - Para sistemas baseados em SysVinit:
service --status-all - Usando o comando
ps:ps aux
3. Como posso verificar se um serviço inicia junto com o sistema?
- Para systemd:
systemctl is-enabled <service-name> - Para SysVinit (sistemas baseados em RHEL):
chkconfig --list <service-name>
4. Como reiniciar um serviço?
- Para sistemas baseados em systemd:
sudo systemctl restart <service-name> - Para sistemas baseados em SysVinit:
sudo service <service-name> restart
5. Como parar ou desabilitar um serviço?
- Para parar um serviço temporariamente:
sudo systemctl stop <service-name> - Para impedir que um serviço inicie junto com o sistema:
sudo systemctl disable <service-name>
6. Como posso descobrir qual serviço está usando uma porta específica?
Você pode usar o netstat ou o ss para encontrar os serviços em execução em uma porta específica:
netstat -tulnp | grep :80
ou
ss -tulnp | grep :80
7. E se o systemctl não for encontrado?
Se você receber um erro como command not found: systemctl, é sinal de que o seu sistema pode não estar usando o systemd. Tente usar:
service --status-all
ou
ps aux | grep <service-name>
8. Como listar os serviços com falha?
Em sistemas baseados em systemd, execute:
systemctl list-units --type=service --state=failed
9. Como habilitar os logs de um serviço específico?
Para consultar os logs de um serviço gerenciado pelo systemd, use:
journalctl -u <service-name>
Para acompanhar os logs em tempo real:
journalctl -u <service-name> -f
10. Posso usar o top ou o htop para ver os serviços em execução?
Sim! O top e o htop oferecem uma visualização ao vivo dos processos em execução:
- Use o
top:top - Use o
htop(interativo e fácil de usar):
(Instale comhtopsudo apt install htopousudo yum install htopcaso não esteja disponível.)
