Como listar serviços Linux com systemctl
Publicados: 2022-10-23Seu computador Linux depende de muitas tarefas em segundo plano chamadas de serviços ou daemons. Em distribuições baseadas em systemd, você tem comandos internos que permitem ver quais serviços estão em execução, desabilitados ou com falha.
Serviços e Daemons
Serviços e daemons são tarefas em segundo plano que são executadas sem uma interface de usuário, não requerem interação humana e geralmente são iniciadas quando o computador é inicializado.
Ao mesmo tempo, os serviços eram lançados pelo init
, que foi o primeiro processo a ser lançado. Os detalhes dos serviços foram mantidos em uma coleção de scripts localizada no diretório “/etc/init/d”. Em distribuições não systemd, esse ainda é o caso.
No mundo systemd, os serviços são lançados pelo systemd
, que agora é o primeiro processo a ser lançado. Os detalhes dos serviços são armazenados em arquivos unitários localizados no diretório “/usr/lib/systemd”.
De acordo com sua página man, systemd
é um gerenciador de sistema e serviço. Você pode usar o comando systemctl
para inspecionar e controlar diferentes aspectos do sistema systemd, incluindo serviços e daemons.
Como estamos analisando comandos específicos do systemd aqui, a primeira coisa que você precisa saber é se está executando uma distribuição baseada no systemd ou não.
RELACIONADOS: Por que o systemd do Linux ainda é divisivo depois de todos esses anos
init Ou baseado em systemd?
A grande maioria das distribuições Linux usa systemd, incluindo Arch, Red Hat e Debian, e muitas das distribuições derivadas deles. Isso inclui a família de distribuições Ubuntu, Fedora e seus spins, e Manjaro e outras distribuições baseadas em Arch.
No entanto, existem bifurcações ou variações de algumas dessas distribuições que foram criadas especificamente para evitar o uso do systemd. Não apenas isso, mas existem outros sistemas init que alguém poderia escolher usar em vez do que veio por padrão em sua distribuição, como runit ou s6-linux-init.
Se você tiver que administrar um computador Linux que você mesmo não configurou, a única maneira de ter certeza se está usando o systemd ou não é verificar. Podemos fazer isso olhando a árvore de processos com o comando pstree
. Nós só precisamos ver o topo da árvore—estamos procurando o primeiro processo que é executado, afinal—então vamos canalizar a saída através do comando head
e pedir as primeiras cinco entradas.
pstree | cabeça -5
Podemos ver que o systemd
é o primeiro processo executado após a inicialização, então definitivamente estamos em uma instalação do Linux baseada em systemd.
RELACIONADO: Como gerenciar processos do terminal Linux: 10 comandos que você precisa saber
Usando systemctl para listar serviços
O comando para listar serviços e daemons é systemctl
. Podemos refinar o comando systemctl
com as opções de type
e state
. Estamos pedindo ao systemctl
para relatar os serviços que estão no estado de execução.
systemctl --type=service --state=running
Uma tabela de informações é gerada. Se for muito largo ou longo para a janela do seu terminal, ele será exibido no visualizador de arquivos padrão, que provavelmente será less
.
Para ver a extremidade direita da tabela, pressione a tecla de seta para a direita. Para retornar à visualização normal, pressione a tecla de seta para a esquerda.
Pressione a tecla Q para sair de menos. As colunas exibidas são:
- Unit : O nome do serviço ou daemon. A coluna é intitulada “Unidade” porque o que estiver nesta coluna foi lançado usando o
systemd
de informações encontrado em um arquivo de unidade. - Load : O estado de carregamento do serviço ou daemon. Ele pode ser carregado, não encontrado, configuração incorreta, erro ou mascarado.
- Ativo : O estado geral em que o serviço ou daemon está. Ele pode estar ativo, recarregando, inativo, com falha, ativando ou desativando.
- SUB : O subestado do serviço ou daemon. Ele pode estar morto, encerrado, com falha, inativo ou em execução.
- Descrição : Uma breve descrição da unidade.
Podemos canalizar a saída de systemctl
por meio de grep
se quisermos nos concentrar em um único serviço. Este comando isola a entrada da tabela para o serviço ssh
.
systemctl --type=service --state=running | grep ssh
Até agora, filtramos o conteúdo da tabela fornecendo a opção state=running
. Em vez disso, podemos usar qualquer um dos valores possíveis do subestado: morto, encerrado, com falha, inativo ou em execução.
Vamos procurar serviços com falha:
systemctl --type=service --state=failed
Combinações de subestados podem ser usadas. Digite-os como uma lista separada por vírgulas. Certifique-se de não incluir nenhum espaço em branco entre as opções. Observe que isso localiza serviços que correspondem a qualquer estado.
systemctl --type=service --state=failed,exited
Pressionar a tecla de seta para a direita para ver as colunas fora da tela mostra que temos uma mistura de serviços encerrados e com falha na lista.
Por padrão, o systemctl
lista os processos—serviços e daemons—que foram iniciados pelo systemd
porque o systemd
encontrou um arquivo de unidade que continha um arquivo de unidade válido para eles. É por isso que o termo abreviado para todos esses processos é “unidades”.
Existe uma opção para solicitar explicitamente ao systemctl
para listar unidades, mas como é a ação padrão, não é usada com frequência.
Esses comandos produzem os mesmos resultados.
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=running
Usando systemctl para listar arquivos de unidade
Podemos expandir o escopo do comando systemctl
incluindo a opção list-unit-files
. Isso não apenas relata os serviços e daemons que foram lançados, mas também lista todos os arquivos de unidade instalados em seu computador.
systemctl list-unit-files --state=enabled
Uma tabela colorida é exibida.
A remoção da opção de state
remove a filtragem. A saída conterá todos os arquivos de unidade instalados, independentemente de seu estado.
arquivos de unidade de lista systemctl
A saída conterá muito mais entradas do que os resultados dos comandos anteriores.
Em nosso computador de teste, a lista de resultados é quase quatro vezes maior que a saída de nossos comandos anteriores.
Se você quiser usar a opção de state
, poderá usar vários estados com ela, como vimos anteriormente. As mesmas regras se aplicam. Forneça as opções como valores separados por vírgulas e não inclua nenhum espaço em branco.
Este comando listará todos os arquivos de unidade que estão desabilitados ou com falha na inicialização.
systemctl list-unit-files --state=enabled,failed
Um número reduzido de resultados é mostrado, filtrado de acordo com as seleções feitas com a opção de estado.
Olhando para um serviço em detalhes
Se algo sobre um serviço ou daemon despertar seu interesse e merecer um mergulho mais profundo, você poderá examiná-lo em detalhes usando a opção systemctl status.
Vamos dar uma olhada no daemon SSH, sshd. Tudo o que precisamos fazer é usar a opção de status e o nome do serviço ou daemon.
status do systemctl sshd
Este display compacto mostra:
- O nome do serviço junto com uma breve descrição. Um ponto codificado por cores mostra se está em execução ou não. Verde significa que está funcionando, vermelho significa que não está.
- O que foi carregado, incluindo o caminho para o arquivo de unidade.
- Há quanto tempo está em execução.
- Onde a documentação está localizada no manual do
man
. - O ID do processo da instância em execução.
- Quantas instâncias simultâneas deste serviço estão em execução. Normalmente este será um.
- Quanta memória está sendo consumida.
- Quanto tempo de CPU foi consumido.
- O grupo de controle ao qual o serviço pertence.
As entradas relevantes do log do sistema também são mostradas. Normalmente, são eventos como a inicialização do serviço. Eles podem ser informativos se você estiver analisando um serviço ou daemon que não foi iniciado corretamente.
RELACIONADO: Como usar journalctl para ler logs do sistema Linux
Os sistemas autônomos
Os serviços e daemons fornecem muitas das ações automáticas do seu sistema operacional, portanto, são vitais. Isso significa que sua saúde também é vital.
Obter uma visão de seus serviços, daemons e arquivos de unidade é fácil e informativo. Também é uma etapa valiosa de solução de problemas se um serviço ou daemon se recusar a iniciar.
RELACIONADO: Como resolver o erro "Muitos arquivos abertos" no Linux