Como Listar Serviços em Execução no Linux: Um Guia Completo para Todos os Sistemas Init
Introdução
Os serviços do Linux são processos em segundo plano que executam continuamente tarefas do sistema, como gerenciar redes, lidar com logins de usuários ou executar servidores web. Esses serviços podem ser gerenciados através de várias ferramentas, dependendo da distribuição Linux e do sistema init em uso.
Saber como listar serviços em execução é essencial para administradores de sistema e desenvolvedores. Isso ajuda com:
- Solução de problemas – Verificar se um serviço crítico está em execução ou falhou.
- Monitoramento de desempenho – Identificar serviços que consomem muitos recursos.
- Auditoria de segurança – Garantir que apenas serviços necessários estejam ativos.
Usando systemctl (Para Sistemas Baseados em Systemd)
A maioria das distribuições Linux modernas, incluindo Ubuntu (16.04+), CentOS (7+), Fedora e Debian (8+), usa systemd como o sistema init. O comando systemctl
é a ferramenta principal para gerenciar e listar serviços nesses sistemas.
Verificando o Status de um Serviço Específico
Para verificar se um serviço específico 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 falhou, juntamente com 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 de todos os serviços atualmente em execução, juntamente com seu status.
Listando Todos os Serviços (Incluindo os Inativos)
Se você quiser ver todos os serviços, independentemente de estarem em execução ou não:
systemctl list-units --type=service
Isso incluirá serviços que estão ativos, inativos, falhados ou em outros estados.
Filtrando Serviços por Estado
Você pode filtrar serviços com base em seu estado usando:
systemctl list-units --type=service --state=failed
Isso listará apenas os serviços falhados, o que pode ser útil para solução de problemas.
Listando Serviços Habilitados na Inicialização
Para verificar quais serviços estão configurados para iniciar automaticamente na inicialização:
systemctl list-unit-files --type=service | grep enabled
Exemplo de Saída
Uma saída típica de systemctl list-units --type=service --state=running
pode parecer com isto:
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=running
para listar serviços ativos. - Use
systemctl list-units --type=service
para ver todos os serviços. - Use
systemctl list-unit-files --type=service
para visualizar serviços habilitados na inicialização.
Usando ps e grep para Processos em Execução
Se você quiser listar serviços em execução sem depender do systemctl
ou outras ferramentas de gerenciamento de serviços, pode usar ps (status do processo) junto com grep para encontrar processos específicos.
Esse método é útil quando:
- Você está trabalhando em um sistema Linux minimalista que não possui os comandos
systemctl
ouservice
. - Você quer verificar se um processo específico 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 produzirá uma lista extensa de todos os processos em execução, incluindo seus IDs de processo (PIDs), uso de CPU, uso de memória e nomes de comando.
Buscando um Serviço Específico
Para verificar se um serviço específico está em execução, use ps aux | grep <service-name>
:
ps aux | grep nginx
Isso exibirá linhas que incluem "nginx", mostrando se está em execução. A saída pode parecer com isto:
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
Aqui:
- 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í-lo usando:
ps aux | grep nginx | grep -v grep
Exibindo Processos em um Formato Hierárquico
Para uma visualização mais estruturada, use:
ps fax
Isso mostra uma estrutura em árvore dos processos em execução, facilitando a identificação de quais serviços estão em execução e seus processos filhos.
Encontrando Serviços por Porta
Se você suspeitar que um serviço está em execução em uma porta específica, mas não tem certeza do nome do serviço, use:
netstat -tulnp | grep :80
ou, se 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 Nginx ou Apache).
Resumo
- Use
ps aux
para listar todos os processos em execução. - Use
ps aux | grep <service-name>
para verificar um serviço específico. - Use
ps fax
para uma visualização em árvore dos processos. - Use
netstat -tulnp
ouss -tulnp
para encontrar serviços em execução 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 diferentes métodos dependendo da 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 na inicialização?
- 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 na inicialização:
sudo systemctl disable <service-name>
6. Como posso encontrar qual serviço está usando uma porta específica?
Você pode usar netstat
ou ss
para encontrar serviços em execução em uma porta específica:
netstat -tulnp | grep :80
ou
ss -tulnp | grep :80
7. E se systemctl
não for encontrado?
Se você receber um erro como comando não encontrado: systemctl
, isso significa que seu sistema pode não estar usando systemd. Tente usar:
service --status-all
ou
ps aux | grep <service-name>
8. Como listar serviços falhados?
Para sistemas baseados em systemd, execute:
systemctl list-units --type=service --state=failed
9. Como habilitar logs para um serviço específico?
Para verificar logs de um serviço gerenciado pelo systemd, use:
journalctl -u <service-name>
Para visualizar logs em tempo real:
journalctl -u <service-name> -f
10. Posso usar top
ou htop
para ver serviços em execução?
Sim! top
e htop
fornecem uma visualização ao vivo dos processos em execução:
- Use
top
:top
- Use
htop
(interativo e amigável ao usuário):
(Instale comhtop
sudo apt install htop
ousudo yum install htop
se não estiver disponível.)