No
Linux, um serviço é um programa executado em segundo plano. Os serviços podem ser iniciados sob demanda, ou no momento da inicialização do sistema.
Caso você esteja usando o Linux como seu sistema operacional primário, ou como plataforma de desenvolvimento, lidará com diferentes tipos de serviços, como por exemplo o servidor web, ssh ou cron. Saber como listar os serviços em execução, ou verificar o status de um serviço, é importante ao analisar e depurar problemas do sistema.
A maioria das distribuições recentes do Linux utiliza o [B]systemd[/B] como sistema init padrão, além de gerenciador dos serviços.
O
systemd é um conjunto de ferramentas para o gerenciamento dos sistemas Linux. É usado para inicializar a máquina, gerenciar serviços, montar sistemas de arquivos automaticamente, registrar eventos, configurar o nome do host, dentre outras tarefas do sistema.
Este material explica como listar serviços no Linux.
Listagem de serviços do Linux
O
systemd usa o conceito de unidades, que podem ser serviços, soquetes, pontos de montagem, dispositivos, etc. As unidades são definidas usando arquivos de texto no formato ini. Esses arquivos incluem informações sobre a unidade, suas configurações e comandos a serem executados. As extensões de nome de arquivo definem o tipo de arquivo da unidade. Por exemplo, os arquivos da unidade de serviço do sistema têm uma extensão .service.
Systemctl é um utilitário de linha de comando usado para controlar o systemd e gerenciar serviços. Faz parte do ecossistema systemd e está disponível por padrão em todos os sistemas.
Para obter uma lista de todas as unidades de serviço carregadas, digite:
sudo systemctl list-units --type service
O resultado será do tipo:
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
Cada linha de saída contém as seguintes colunas da esquerda para a direita:
- UNIT - o nome da unidade de serviço.
- LOAD - informação sobre se o arquivo da unidade que foi carregado na memória.
- ACTIVE - o estado de ativação do arquivo da unidade de alto nível, que pode ser ativo, recarregando, inativo, com falha, ativando, desativando. É uma generalização da coluna SUB.
- SUB - o estado de ativação do arquivo de unidade de nível inferior. O valor deste campo depende do tipo de unidade. Por exemplo, uma unidade do tipo serviço pode estar em um dos seguintes estados: inativo, encerrado, com falha, inativo ou em execução.
- DESCRIPTION - breve descrição do arquivo da unidade.
Por padrão, o comando lista apenas as unidades ativas carregadas. Para ver as unidades carregadas, mas também inativas, passe a opção --all:
sudo systemctl list-units --type service --all
Se você quiser ver todos os arquivos da unidade instalados, não apenas os carregados, use:
sudo systemctl list-unit-files
Exibindo Status do Serviço
Para verificar o status de um serviço, use o comando systemctl status:
sudo systemctl status <service_name>.service
Onde <service_name> é o nome da unidade de serviço que você deseja verificar. Por exemplo, para determinar o status atual do serviço nginx, você executaria:
sudo systemctl status nginx.service
Observação: você pode omitir o sufixo ".service": systemctl status nginx é o mesmo que systemctl status nginx.service
O resultado será do tipo:
● 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 Wed 2021-12-23 18:13:50 UTC; 15s ago
Docs: man:nginx(8)
Process: 3263057 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3263065 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 18:13:59 drsolutions.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
O comando acima imprimirá as seguintes informações:
- Loaded - se a unidade de serviço foi carregada e o caminho completo para o arquivo da unidade. Também mostra se a unidade está habilitada para iniciar no momento da inicialização.
- Active - se o serviço está ativo e em execução. Se o seu terminal suportar cores e o serviço estiver ativo e em execução, o ponto (●) e a parte "active (running)" serão impressos em verde. A linha também mostra por quanto tempo o serviço está em execução.
- Docs - a documentação do serviço.
- Process - informações sobre os processos de serviço.
- Main PID - o PID de serviço.
- Tasks - o número de tarefas contabilizadas para a unidade e o limite de tarefas.
- Memory - informações sobre a memória usada.
- CGroup - informações sobre grupos de controle relacionados.
Caso você deseje apenas verificar o status do serviço, use o comando systemctl is-active. Por exemplo, para verificar se o serviço nginx está em execução, você executaria:
systemctl is-active nginx.service
O resultado será do tipo:
active
O comando anterior mostrará o status do serviço. Se o serviço estiver ativo, o comando retorna um status de saída 0, o que pode ser útil ao usar o comando dentro de scripts do shell.
Conclusões
Mostrei nesse material como usar o comando systemctl para listar os serviços do Linux e verificar o seu status.
Se você tiver alguma dúvida ou feedback, sinta-se à vontade para comentar, ou fazer sua pergunta.