Serviços Linux: como gerenciar e listar através do systemctl

por | 19/07/2022 | Configuração

Saber lidar de forma adequada com os inúmeros serviços Linux é essencial para quem administra um servidor web, por exemplo. Porém, você pode entender e aprender a gerenciar serviços mesmo se usar Linux apenas no seu desktop.

Além disso, talvez você queira também dar uma olhada em alguns comandos Linux essenciais, além de 5 ótimas ferramentas de linha de comando.

Estas informações extras podem ajudar você ao longo deste guia, bem como no momento em que você for realizar os procedimentos descritos.

Em primeiro lugar, porém, você deve saber o que são serviços Linux, bem como qual a importância deles em nossa rotina diária com o sistema operacional do pinguim.

O que são serviços Linux, systemd e systemctl

No Linux, um serviço é uma aplicação ou script que roda continuamente em segundo plano, aguardando por alguma solicitação.

Tecnologia - Engrenagens

Também conhecidos como daemons, os serviços podem ser inicializados sob demanda ou então de forma automática, no momento do boot do sistema, por exemplo.

Além disso, os serviços (ou services) funcionam sem a interação do usuário, e existem inclusive serviços essenciais para o bom funcionamento do sistema.

É o caso, por exemplo, do cron e do Apache (dependendo da situação e do uso, é claro). Mas existem outros, muitos outros, e em meio a isto tudo um sistema muito especial entra em cena: o systemd.

Sem entrar em muitos detalhes (até mesmo para não aumentar ainda mais o tamanho deste artigo), vale dizer que o systemd é o responsável pela inicialização do sistema e pelo gerenciamento dos serviços.

O systemd é um sistema de inicialização (system init) lançado em 2010. Apesar das polêmicas que envolvem sua criação e uso, vale dizer que ele é um substituto do antigo System V (ou SysV).

Além disso, a maior parte das distros modernas usa o systemd como sistema init padrão. O init presente no termo, aliás, é uma abreviação de “initialization” (ou inicialização).

O systemd entra em cena assim que o kernel Linux é ativado pelo gerenciador de boot, e é a partir deste ponto que os elementos de hardware são carregados (placas de rede, de vídeo, etc). É também a partir deste ponto que os processos que iniciam com o sistema são carregados.

Sendo o systemd composto por diversos serviços e ferramentas, vamos agora trabalhar com uma ferramenta em específico, chamada systemctl.

Como gerenciar serviços Linux com o systemctl

É através do systemctl que iremos gerenciar inúmeros serviços Linux. É através desta ferramenta, a qual roda no terminal, que iremos listar, parar, iniciar e reiniciar serviços no Linux.

O comando systemctl também permite que você use uma série de opções extras. Sua sintaxe, porém, é muito simples.

Na verdade, não é muito difícil realizar este gerenciamento, uma vez que você aprende a listar serviços Linux. Assim, seguem abaixo uma série de comandos ou modos de uso do systemctl.

Portanto, abra seu terminal e mãos à obra!

Como listar todos os serviços Linux

systemctl list-unit-files --type service --all

O comando acima exibirá todos os serviços disponíveis no seu sistema. A lista pode ser grande, mas você pode utilizar as setas do teclado (para baixo) para navegar através dela:

Serviços Linux - Lista

Observe agora que há um coluna chamada “State“. Ela indica, como seu nome deixa claro, o “Estado” atual de um serviço. Nesse sentido, seguem abaixo alguns dos possíveis estados:

  • Enabled : ativado. Aqui temos serviços que estão em execução no momento. Serviços “enabled“, além disso, serão sempre carregados na inicialização do sistema;
  • Disabled : desativado. Aqui temos serviços que não estão em execução no momento, mas que podem ser inicializados. Servicos “disabled” não serão carregados na inicialização do sistema;
  • Alias : aqui temos serviços que também estão em execução através de outro nome;
  • Masked : mascarado. Aqui temos serviços que não podem ser executados de modo algum. Tais serviços, de certa forma, estão “bloqueados”. Serviços “masked” não podem ser ativados (enable) ou iniciados (start). Veja mais detalhes abaixo;
  • Static : “static” refere-se a serviços que executam uma ação única ou então representam uma dependência de algum outro daemon. Por exemplo, aqui pode ser citado o serviço “apt-daily-upgrade.service“, que é inicializado pelo “apt-daily-upgrade.timer“;

Como listar os serviços Linux em execução

O comando abaixo é bem mais específico, pois permite que você visualize apenas os serviços que estão em execução no momento.

Observe também que iremos utilizar uma combinação de comandos (systemctl e grep):

systemctl | grep running

E agora que você já sabe como verificar os serviços no Linux de modo a obter uma lista com todas as “unidades”, bem como filtrar e exibir apenas os serviços que estão rodando no momento, chegou a hora do gerenciamento.

Como verificar o status de um serviço

É tudo muito fácil, entretanto, e para obter rapidamente o status de um serviço, ou seja, saber se ele está em execução no momento ou não, basta usar um comando com a seguinte sintaxe:

systemctl status nomeDoServiço

Ou seja, digamos agora que você deseja obter o status do “mysql.service” (nome este obtido, aliás, através dos comandos de listagem de serviços – veja acima).

Basta digitar o seguinte no terminal:

systemctl status mysql.service

Vale também lembrar que você pode usar apenas “mysql” (sem aspas). E isto vale para qualquer serviço. Por exemplo:

  • apache2;
  • apparmor;
  • cron;
  • bluetooth;
  • NetworkManager
  • Etc.

Entendendo o status dos serviços Linux

Após executar o comando acima (para obter o status de um serviço), você obterá uma saída mais ou menos parecida com a abaixo, dependendo do serviço em questão:

Cron

Repare que a saída do comando exibe informações muito importantes sobre o serviço, conforme abaixo:

  • Nome e descrição do serviço: (exemplo: cron.service – Regular background program processing daemon);
  • Loaded: informa se o serviço está carregado, bem como o caminho completo para o mesmo. Além disso, aqui também consta o estado da unidade: devido ao enabled, no caso do cron, sabemos também que ele é carregado a cada inicialização. Finalmente, temos um indicativo ref. à predefinição “de fábrica’: no caso do cron.service, por exemplo, o padrão é enabled;
  • Active: através desta linha, ficamos sabendo se o serviço está ativo e em execução (active – running). Esta linha também indica por quanto tempo o serviço está rodando (Since, etc);
  • Docs: como obter acesso à documentação do serviço. No caso, conforme este exemplo, basta usar o comando man cron;
  • Main PID: o PID (Process Identifier) principal. Através do Identificador de Processo é possível inclusive “matar” o processo em questão (através do comando kill, com “kill 1191“, de acordo com o exemplo acima);
  • Tasks: quantidade de tarefas do serviço, além do limite de tarefas;
  • Memory: total de memória em uso pelo serviço;
  • CPU: dados relativos ao uso de CPU pelo serviço;
  • CGroup: dados relativos aos grupos de controle relacionados;

Como você pôde notar, é muito fácil identificar as diversas informações relacionadas aos serviços Linux, bem como descobrir se eles estão em execução ou não (além de vários outros dados importantes).

Como parar um serviço

É muito simples parar um serviço no Linux (como você deve estar imaginando). Neste caso, usaremos o comando systemctl em conjunto com a opção stop. Assim, basta usar um comando com a sintaxe abaixo:

sudo systemctl stop nomeDoServiço

Obs: lembre-se de que estou dando alguns exemplos práticos apenas para facilitar as coisas. Tome cuidado com os serviços que você vai parar ou desabilitar.

Nesse sentido, para parar o servidor HTTP Apache, basta usar o seguinte comando no terminal:

sudo systemctl stop apache2

Agora, repare na saída do comando systemctl status apache2:

Apache

Como você pode notar, o serviço encontra-se agora inativo, e isto se deve ao stop que executamos acima. Observe também que é informado inclusive há quanto tempo ele está neste estado.

Obs: note também que um serviço que é parado será carregado e inicializado novamente, junto com o sistema, desde que seu estado esteja definido como enabled (veja acima). Ou seja, um stop interrompe o serviço apenas na sessão atual (veja abaixo a opção enable).

Como iniciar um serviço

De forma muito parecida, é possível iniciar um serviço no Linux através de um comando com a sintaxe abaixo:

sudo systemctl start nomeDoServiço

Ou seja, para iniciar novamente o serviço que paramos acima (apache2), basta usar o comando abaixo:

sudo systemctl start apache2

Muito simples, não?

Como reiniciar um serviço

De forma rápida, também é possível reiniciar um serviço, através de um comando com a seguinte sintaxe:

sudo systemctl restart nomeDoServiço

Como recarregar um serviço

Agora, se você fez alguma configuração e deseja fazer com que ela surta efeito, é também possível recarregar o serviço (sem que seja necessário reiniciá-lo):

sudo systemctl reload nomedoServiço

Obs: isto não funciona com todos os serviços. Na dúvida, opte pelo restart.

Como ativar um serviço no boot do sistema

Você deve ter percebido que anteriormente eu comentei a respeito do termo enable. Bem, é possível também ativar (enable) ou desativar (disable) um serviço, de maneira tal a fazer com que ele seja carregado ou não no boot do sistema.

E é muito simples. Para ativar e assim fazer com que o serviço seja carregado na inicialização do sistema, use um comando com a seguinte sintaxe:

sudo systemctl enable nomeDoServiço

Não se esqueça de que, em seguida, é também necessário iniciar o serviço (caso ele esteja parado):

sudo systemctl start nomeDoServiço

Como desativar um serviço no boot do sistema

Agora, para desativar um serviço, e fazer com que ele não seja mais carregado na inicialização do sistema, use um comando com a seguinte sintaxe:

sudo systemctl disable nomeDoServiço

É importante lembrar mais uma vez que a opção disable apenas diz que desejamos fazer com que o serviço não carregue mais junto com o sistema. Porém, na sessão atual, ele continua sendo executado (caso já tenha sido inicializado, claro).

Assim, veja a saída abaixo (após ter desativado o serviço), na qual o mysql.service consta como “disabled“, ao mesmo tempo em que está em execução (active – running):

Serviços Linux - Status

Simples, não?

Como verificar se um serviço está em execução

Também é possível verificar rapidamente se determinado serviço está sendo executado ou não. Basta usar um comando com a sintaxe abaixo:

systemctl is-active nomeDoServiço

Por exemplo, para conferir se o cron está sendo executado ou não:

systemctl is-active cron

Rapidamente você obterá a resposta: active ou inactive.

Como verificar se um serviço está ativado ou desativado

E para saber com exatidão se determinado serviço será executado (enabled) ou não (disabled) quando o sistema for iniciado/reiniciado, basta usar um comando com a sintaxe abaixo:

systemctl is-enabled nomeDoServiço

Ou seja, para conferir se o Apache está ativado ou não, use o seguinte comando:

systemctl is-enabled apache2

Como listar dependências de serviços Linux

Já um comando com a sintaxe abaixo permite que sejam listadas todas as dependências de um determinado serviço:

systemctl list-dependencies nomeDoServiço

Portanto, para exibir, por exemplo, as dependências do cron, use o comando abaixo:

systemctl list-dependencies cron

E rapidamente você poderá conferir de forma hierárquica todas as dependências relacionadas. Veja:

Serviços Linux - Dependências

Como mascarar e desmascarar serviços

Se você prestou atenção neste guia desde o início, vai reparar que eu mencionei serviços masked (mascarados). Ou seja, neste caso temos serviços que não podem ser ativados ou iniciados.

Porém, é possível usar o comando systemctl para “mascarar” e “desmascarar” serviços, de forma muito simples.

Para definir o estado de um daemon como masked, simplesmente utilize um comando com a seguinte sintaxe:

sudo systemctl mask nomeDoServiço

Agora, podemos aplicar isto tudo em um exemplo prático. Por exemplo, para “mascarar” o mysql.

Obs: e mais uma vez fica um aviso – tome muito cuidado com este tipo de procedimento. Fique atento aos comandos que executa, e lembre-se, neste caso/teste, de “desmascarar” serviços que porventura sejam essenciais no seu sistema.

Mas vamos então “mascarar” o mysql, para que ele não possa mais ser iniciado, tanto manualmente quanto automaticamente:

sudo systemctl mask mysql

Dessa forma não é mais possível iniciar o mysql.service. Se tentarmos iniciá-lo através do terminal, iremos nos deparar com a seguinte mensagem de erro:

Serviços Linux - Mascarar serviço

Ou seja, a mensagem acima diz que houve “falha” na inicialização do mysql.service, pois o serviço está “mascarado”.

Mas é muito simples, também, “desmascarar” um serviço. Você deve usar um comando com a sintaxe abaixo:

sudo systemctl unmask nomeDoServiço

Assim, para “desmascarar” o mesmo mysql, simplesmente use o comando abaixo:

sudo systemctl unmask mysql

E pronto! O serviço em questão foi “desmascarado”, e já pode ser inicializado através do comando sudo systemctl start mysql.

E assim por diante. O comando é o mesmo, basta adaptá-lo aos serviços que desejar.

Conclusão

Como você pôde perceber, o systemd (e a própria ferramenta systemctl) representa um campo bem vasto, no Linux. Há muito mais que pode ser dito, explicado e discutido, a respeito deste famoso sistema.

Através deste guia, além disso, você pôde ter uma ideia melhor a respeito deste sistema init, que é padrão na maioria das distros Linux atuais.

Além disso, também entramos em detalhes a respeito do comando systemctl, através do qual é possível gerenciar totalmente os serviços no Linux.

Apesar de essencial aos administradores de sistema, por exemplo, gerenciar serviços de forma adequada é algo que você pode (e deve) saber. Mesmo que use Linux “apenas” em um desktop ou notebook.

Bem, espero que você tenha gostado do conteúdo. Gostou? Deixe um comentário, e compartilhe com seus amigos!

Compartilhe este conteúdo:

<a href="https://teclinux.com/author/marcos-zy/" target="_self">Marcos A.T. Silva</a>

Marcos A.T. Silva

Apaixonado por tecnologia desde tenra idade, trabalha com TI há mais de 20 anos. Tem no rock and roll (em suas mais variadas vertentes) uma válvula de escape, e adora escrever guias e tutoriais, além de ser um grande entusiasta do Linux e do software livre.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Pin It on Pinterest

Share This

Compartilhe

Compartilhe este post com seus amigos!