Como listar serviços Linux com systemctl

Um terminal aberto no Ubuntu.

**Para ver todos os serviços em execução em um sistema Linux com systemd, use o comando “systemctl –type=service –state=running”. Isso mostrará o nome de cada serviço ativo, carga, sub -estado e descrição. Você também pode alterar o valor do estado para ver os serviços que estão inativos, encerrados, com falha ou inativos.**

Seu computador Linux depende de muitas tarefas em segundo plano chamadas serviços ou daemons. Nas distribuições baseadas no systemd, você possui comandos integrados que permitem ver quais serviços estão em execução, desativados ou com falha.

Serviços e Daemons

Serviços e daemons são tarefas em segundo plano executadas sem 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 foram lançados pela init, que foi o primeiro processo a ser lançado. Os detalhes dos serviços foram mantidos em uma coleção de scripts localizados 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, sendo systemdagora 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 de manual, systemdé um gerenciador de sistemas e serviços. Você pode usar o systemctlcomando 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.

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 suas versões, e Manjaro e outras distribuições baseadas em Arch.

No entanto, existem bifurcações ou versões de algumas dessas distribuições que foram criadas especificamente para evitar o uso do systemd. Não só isso, mas existem outros sistemas init que alguém poderia escolher usar em vez daquele que veio por padrão em sua distribuição, como runit ou s6-linux-init .

Recomendado:  As melhores chaves de segurança de hardware de 2022

Se você tiver que administrar um computador Linux que não foi configurado por você mesmo, a única maneira de ter certeza se ele está usando o systemd ou não é verificar. Podemos fazer isso observando a árvore de processos com o pstreecomando. Precisamos apenas ver o topo da árvore – afinal, estamos procurando o primeiro processo que é executado – então canalizaremos a saída através do headcomando e solicitaremos as cinco primeiras entradas.

pstree | cabeça -5

Usando pstree canalizado através do head para determinar se uma instalação do Linux está usando o systemd

Podemos ver que esse systemdé o primeiro processo executado após a inicialização, então estamos definitivamente em uma instalação do Linux baseada em systemd.

Usando systemctl para listar serviços

O comando para listar serviços e daemons é systemctl. Podemos refinar o systemctlcomando com as opções typee state. Estamos pedindo systemctlpara relatar os serviços que estão em execução.

systemctl --type=serviço --state=em execução

Usando systemctl para listar serviços em execução

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.

A saída forma uma chamada systemctl exibida no visualizador de arquivos less

Para ver a extremidade direita da tabela, pressione a tecla de seta para a direita. Para retornar à visualização normal, pressione a tecla Seta para a esquerda.

A seção direita da saída forma uma chamada systemctl exibida no visualizador de arquivos less

Pressione a tecla Q para sair de menos. As colunas exibidas são:

  • Unidade : O nome do serviço ou daemon. A coluna é intitulada “Unidade” porque tudo o que está nesta coluna foi iniciado usando informações systemdencontradas 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 se encontra. Pode ser 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.
Recomendado:  6 erros de posicionamento do roteador Mesh a serem evitados

Podemos canalizar a saída systemctlse grepquisermos nos concentrar em um único serviço. Este comando isola a entrada da tabela para o sshserviço.

systemctl --type=serviço --state=em execução | grep ssh

Usando grep para isolar um único serviço dos resultados

Até agora, filtramos o conteúdo da tabela fornecendo a state=runningopção. 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=serviço --state=falhou

Relatórios sobre serviços com falha com systemctl

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 encontra serviços que correspondem a qualquer um dos estados.

systemctl --type=serviço --state=falhou, saiu

Procurando serviços que falharam ou foram encerrados com systemctl

Pressionar a tecla de seta para a direita para observar as colunas fora da tela mostra que temos uma mistura de serviços encerrados e com falha na lista.

Uma mistura de serviços com falha e encerrados encontrada pelo systemctl

Por padrão, systemctllista processos — serviços e daemons — que foram iniciados systemdporque systemdencontraram 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 systemctla listagem de unidades, mas como é a ação padrão, ela não é usada com frequência.

Esses comandos produzem os mesmos resultados.

sudo systemctl list-units --type=service --state=running

sudo systemctl --type=serviço --state=em execução

Usando systemctl para listar arquivos de unidade

Podemos expandir o escopo do systemctlcomando incluindo a list-unit-filesopção. Isso não apenas informa sobre serviços e daemons que foram iniciados, mas também lista todos os arquivos de unidades instalados em seu computador.

systemctl list-unit-files --state=enabled

Listando arquivos de unidade com systemctl

Uma tabela colorida é exibida.

Uma lista de arquivos unitários gerados pelo systemctl, exibidos no navegador de arquivos less

Remover a stateopção remove a filtragem. A saída conterá todos os arquivos da unidade instalada, independentemente do seu estado.

arquivos de unidade de lista systemctl

Usando systemctl para listar arquivos de unidade sem filtragem

A saída conterá muito mais entradas do que os resultados dos comandos anteriores.

Todos os arquivos unitários listados por systemctl e exibidos no navegador de arquivos less

No nosso computador de teste, a lista de resultados é quase quatro vezes maior que a saída dos nossos comandos anteriores.

Recomendado:  Como jogar jogos de RPG de mesa remotamente usando o Slack

Se quiser usar a stateopção, você pode usar vários estados com ela, como vimos anteriormente. As mesmas regras se aplicam. Forneça as opções como valores separados por vírgula e não inclua espaços em branco.

Este comando listará todos os arquivos da unidade que estão desabilitados ou que não foram iniciados.

systemctl list-unit-files --state = habilitado, falhou

Usando systemctl para procurar arquivos de unidade que correspondam a um dos dois estados

É mostrado um número reduzido de resultados, filtrados de acordo com as seleções feitas com a opção de estado.

Uma mistura de arquivos de unidades desativados e com falha encontrados pelo systemctl

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ê pode 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

Os detalhes de um único serviço exibido pelo systemctl

Este display compacto mostra:

  • O nome do serviço juntamente com uma breve descrição. Um ponto codificado por cores mostra se ele 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 da unidade.
  • Há quanto tempo está em execução.
  • Onde a documentação está localizada no manmanual.
  • 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.

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 procurando por um serviço ou daemon que não foi iniciado corretamente.

Os Sistemas Autônomos

Serviços e daemons fornecem muitas ações automáticas do seu sistema operacional, por isso são vitais. Isso significa que a saúde deles também é vital.

Obter uma visão de seus serviços, daemons e arquivos de unidades é fácil e informativo. Também é uma etapa valiosa de solução de problemas se um serviço ou daemon se recusar a iniciar.