systemctl: 12 comandos que dominam o Linux 🚀
O comando systemctl tem vários recursos que muitas vezes são ignorados. Além de iniciar e parar serviços no Linux, você também pode listar serviços instalados e verificar seu status. Vamos fazer uma revisão rápida! 🚀
O que é o comando Systemctl?
O comando systemctl é a ferramenta de gerenciamento central do sistema systemd init, conhecido principalmente como a ferramenta usada para iniciar e parar serviços. Mas há muito mais, como evidenciado por sua página de manual que tem mais de 1600 linhas. 📖
Como o systemctl é uma ferramenta de gerenciamento, não apenas um iniciador de serviços, você pode usá-lo para acessar informações úteis sobre seu sistema e seus serviços systemd. 💻
A maioria das distribuições Linux adotou o systemd, mas algumas optaram por manter o sistema init tradicional SystemV. Se você não tiver certeza de qual sua distribuição usa, é fácil descobrir. Usaremos o comando stat para examinar o arquivo init.
estado /sbin/init

O arquivo executável /sbin/init é o primeiro processo iniciado em distribuições baseadas em SystemV. Em distribuições baseadas em systemd, um link simbólico com esse nome aponta para o systemd.
A primeira linha de saída nos mostra que nesta máquina de teste do Ubuntu, /sbin/init é um link simbólico para o arquivo /lib/systemd/systemd. Claramente, esta instalação do Linux usa o systemd. Se fosse uma distribuição baseada em SystemV, a linha conteria apenas “Arquivo: /sbin/init”.
Interrogando serviços com systemctl
Os serviços são definidos em arquivos de unidade, e você verá a palavra unidade espalhada nas opções do systemctl. Como exemplo, podemos obter uma lista de serviços com o comando list-units usando a opção –type.
systemctl lista-unidades --tipo=serviço

A saída é exibida no visualizador de arquivos less, permitindo que você navegue e use a tecla / para pesquisar.
- Unidade: O nome do arquivo da unidade.
- Carregar: Se o arquivo da unidade de serviço foi lido na memória sem erros de sintaxe, esta coluna conterá “carregado”. Isso não significa que o serviço esteja ativo.
- Ativo: Uma visão geral sobre se um serviço está ativo. Um serviço ativo pode não estar em execução.
- Sub: Uma visão mais detalhada sobre se um serviço está em execução. Por exemplo, um serviço ativo pode estar agendado para um temporizador e pode ter saído de sua última execução.
- Descrição: Uma linha de texto destinada a identificar ou descrever o serviço.
A exibição inclui apenas serviços ativos. Para ver todos os serviços, precisamos incluir a opção –all.
systemctl lista-unidades --todos --tipo=serviço

Se visualizar tudo for muito trabalhoso, podemos filtrar a saída com a opção –state.
systemctl lista-unidades --tipo=serviço --estado=em execução

A opção de estado aceitará em execução, parado, habilitado, desabilitado e com falha.
Para focar em serviços com falha, use a opção –failed.
systemctl lista-unidades --falha

Não há unidades com falha neste computador.
Se você observar algum serviço com falha, use a opção list-dependencies para verificar se há dependências não atendidas.
systemctl lista-dependências sshd.service

As dependências têm um círculo codificado por cores representando seu status. Poderia ser:
- Círculo Branco: Inativo ou em manutenção
- Ponto Verde: Ativo.
- Ponto Branco: Desativando.
- Ponto vermelho: Falha ou erro.
Para verificar se um único serviço está habilitado, use o comando is-enabled e forneça o nome do arquivo de unidade do serviço.
systemctl es-htg-example.service habilitado

Controlando serviços com systemctl
Usar systemctl para gerenciar serviços é muito simples e segue o formato dos comandos que vimos até agora. A maior diferença é que você precisará usar sudo para fazer alterações nos estados dos serviços. Não fizemos isso até agora, porque apenas reportamos o status dos serviços.
Para iniciar um serviço, use o comando start seguido do nome do serviço.
suor systemctl começar htg-exemplo.serviço

Se tudo correr bem, você retornará silenciosamente ao prompt de comando. Se preferir uma confirmação positiva, você pode verificá-la com o comando status.
suor systemctl status htg-exemplo.serviço

Interromper um serviço é tão fácil quanto iniciá-lo.
suor systemctl parar htg-exemplo.serviço

Você pode reiniciar um serviço sem precisar passar pelo processo de duas etapas: interrompê-lo e iniciá-lo. Ele comando de reinicialização faz tudo por você.
suor systemctl reiniciar htg-exemplo.serviço

Se você quiser que um serviço inicie na inicialização, você precisa habilitá-lo.
suor systemctl habilitar htg-exemplo.serviço

Observe que isso apenas marca o serviço para iniciar na inicialização, não o inicia imediatamente. Se é isso que você quer, adicionei a opção –now.
suor systemctl habilitar --agora htg-exemplo.serviço

Quando você não precisar mais que um serviço seja iniciado na inicialização, desative-o.
suor systemctl desabilitar htg-exemplo.serviço

Você pode usar o comando journalctl, outra parte do systemd, para procurar entradas relacionadas ao seu serviço. A opção -u (unidade) permite que você especifique o serviço no qual está interessado. Com a opção -S (desde), você pode exibir entradas que ocorreram desde o momento fornecido.
diárioctl -S "08:00:00" -ou htg-exemplo.serviço

Qualquer ferramenta que te ajude obter informações sobre a operação os detalhes internos da sua distribuição Linux serão inestimáveis, tanto para o gerenciamento diário quanto para solução de problemas e diagnóstico. O comando systemctl não é uma ferramenta única. É mais como uma caixa de ferramentas especializada e vale a pena se familiarizar com ela. 🔧🛠️