Maneira Correta de Usar o Ubuntu systemctl para Controlar o Systemd

Gerenciar um serviço ou grupo de serviços em um PC Linux moderno pode ser complicado, isto é, se você não souber o que está fazendo. Sorte para você, o Ubuntu Systemctl tem você coberto para gerenciar serviços em um PC Linux.

Neste tutorial, você aprenderá como gerenciar serviços Systemd no PC Ubuntu executando diferentes comandos systemctl.

Pronto? Hora de começar!

Pré-requisitos

Este tutorial será uma demonstração prática, mas não requer ferramentas especiais, desde que você esteja no Ubuntu 16 ou em uma versão superior, você está pronto para começar. Este tutorial utiliza a versão Ubuntu 20.04.3 LTS para as demonstrações.

O que é o Ubuntu Systemctl?

Antes de executar comandos systemctl no Ubuntu, saiba o que é o Systemctl primeiro. Systemctl é uma utilidade de linha de comando para controlar e gerenciar systemd e serviços de sistema.

Em poucas palavras, o Systemctl é um painel de controle ou gerenciador de serviços para o sistema init systemd para inicializar componentes após a inicialização do kernel Linux. Systemctl é uma coleção de bibliotecas, daemons e utilitários que você pode usar para gerenciar serviços.

Para gerenciar serviços de forma eficaz, conheça os diferentes estados dos serviços, conforme segue:

  • Habilitado – indica que um serviço está configurado para iniciar quando o sistema é inicializado.
  • Desabilitado – indica que um serviço está configurado para não iniciar quando o sistema é inicializado.
  • Ativo – indica que um serviço está atualmente em estado de execução.
  • Inativo – indica que um serviço não está atualmente em execução, mas pode iniciar quando algum aplicativo tentar iniciar esse serviço.

Listando Todos os Serviços

Agora que você conhece os diferentes estados dos serviços, talvez queira ver uma lista de todos os serviços em seu PC Ubuntu. Listar todos os serviços fornece uma série de informações que o prepara para gerenciar os serviços.

Abra seu terminal e execute o comando abaixo para listar todas as unidades de serviço (list-units) (ativos, em execução, saídos ou falhados) com o serviço definido como tipo de unidade (--type=service).

systemctl list-units --type=service

Escolha qualquer um dos serviços da lista que você deseja gerenciar posteriormente neste tutorial e anote o nome da UNIDADE (por exemplo, apache2). Pressione a barra de espaço para rolar para baixo, ou pressione a tecla “Q” para sair do comando.

A propósito, aqui está um bom guia sobre Scripting de Shell do Linux.

Listing All Services (active, running, exited, or failed)

Listagem de Serviços com Estado Específico

Em vez de listar todos os serviços, talvez você queira reduzir a lista de serviços. Se for o caso, adicionar o parâmetro --state resolverá, pois filtra os serviços com o estado específico que você especificar.

Execute um dos comandos abaixo para listar todos os serviços ativos (--type=service --state=active), tanto os em execução quanto os encerrados.

systemctl list-units --type=service --state=active
Listing Services on “active” State

Da mesma forma, para listar apenas serviços encerrados ou em execução, altere o valor do estado de active para running ou exited, conforme mostrado nos comandos abaixo:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

Listagem de Serviços Habilitados

Além de listar serviços ativos, em execução e encerrados, você também pode listar serviços habilitados e desabilitados encadeando o comando grep.

Execute um dos comandos abaixo para listar (list-unit-files) serviços desabilitados ou habilitados (--type=service).

## Lista todos os serviços habilitados
systemctl list-unit-files --type=service | grep enabled
## Lista todos os serviços desabilitados
systemctl list-unit-files --type=service | grep disabled

Tenha em mente um serviço habilitado, conforme mostrado abaixo, pois você precisará dele mais tarde para desabilitar um serviço, mas este tutorial usa o acpid.service como exemplo. O acpid é um daemon extensível que suporta os eventos do Advanced Configuration and Power Interface (ACPI).

Listing Enabled Services

Listando Propriedades do Serviço

Além de listar os serviços, você pode querer verificar as propriedades de um serviço. Ter insights sobre as propriedades do serviço é útil para solução de problemas, parâmetros do processo ou comportamento de reinicialização.

Execute o comando abaixo para mostrar as propriedades de um serviço (acpid.service) em formato chave=valor.

systemctl show acpid.service
Showing Service Properties

Agora, se você estiver procurando apenas por uma propriedade específica do serviço, pode passar a opção -p com o nome da propriedade.

Execute o comando abaixo para mostrar a propriedade MainPID de um serviço (acpid.service).

systemctl show acpid.service -p MainPID
Showing Specific Service Property

Gerenciando um Serviço Específico

Com os conceitos básicos de listagem de serviços cobertos, é hora de gerenciar um serviço específico (único) executando os comandos systemctl stop e start.

o serviço apache (apache2) é utilizado nas seguintes demonstrações, mas você pode gerenciar livremente o serviço que você anotou na seção “listando todos os serviços”. no entanto, antes de parar ou iniciar um serviço, é necessário verificar o status do serviço.

execute o comando abaixo em um terminal para visualizar as informações detalhadas do serviço apache2, como o seu status.

systemctl status apache2

abaixo, você pode ver que o serviço apache2 está ativo e em execução.

Viewing apache2 Service Status

não é necessário inserir a senha do sudo para visualizar o status do serviço, pois você não está alterando o estado do serviço. mas se você iniciar, parar ou reiniciar um serviço, será necessário anteceder o comando sudo e inserir a senha do sudo.

parando um serviço

talvez você queira parar um serviço que foi deixado em execução em segundo plano. nesse caso, o comando systemctl stop é o que você precisa. execute o comando systemctl abaixo para parar o serviço apache2.

sudo systemctl stop apache2

se preferir parar vários serviços simultaneamente, especifique cada serviço separado por espaço, assim: sudo systemctl stop sshd apache2. neste comando, você irá parar tanto os serviços sshd quanto apache2 de uma só vez.

agora execute o comando systemctl status como fez anteriormente para verificar se o serviço apache2 foi interrompido.

systemctl status apache2

você pode ver abaixo que o status do serviço apache2 mudou para inativo (morto), o que indica que o serviço foi parado.

Verifying if apache2 Service is Stopped

iniciando um serviço

Agora, como você inicia um serviço se perceber que ele não está rodando de jeito nenhum? Você executa um comando semelhante ao de parar o serviço, que é o comando systemctl start. Execute o comando abaixo para iniciar o serviço apache2.

sudo systemctl start apache2

Assim como parar vários serviços, você também pode iniciar vários serviços em uma única linha de comando. Substitua o comando stop pelo comando start assim: sudo systemctl start sshd apache2

Agora execute o comando systemctl status mais uma vez para verificar se o serviço apache2 está rodando.

systemctl status apache2

Se você ver o status ativo (running), como mostrado abaixo, então está tudo certo, pois o serviço está funcionando novamente.

Starting apache2 service

Se você preferir reiniciar o serviço imediatamente sem precisar pará-lo primeiro. Se for o caso, opte pelo comando systemctl restart em vez disso, assim: sudo systemctl restart apache2

Habilitando ou Desabilitando um Serviço

Talvez haja um serviço específico que você prefira iniciar ou impedir de iniciar na inicialização do sistema. Se for o caso, executar o comando systemctl enable ou disable é a melhor abordagem.

O subcomando enable permite configurar as configurações de inicialização padrão no seu sistema, enquanto o subcomando disable impede que um serviço seja executado na inicialização do sistema.

Execute o comando systemctl abaixo para desativar o serviço (acpid.service) que você observou na seção “Listando Serviços Ativados”. Digite sua senha de sudo para autorizar a execução do comando.

sudo systemctl disable acpid.service
Disabling a Service

Agora, como o serviço acpid.service suporta a configuração direcionada pelo sistema operacional e Gerenciamento de Energia (OSPM), você precisa reativá-lo. O comando para ativar o serviço é semelhante ao de desativar um serviço.

Execute o comando systemctl abaixo para ativar o acpid.service. Este comando registra o serviço de volta às configurações padrão de inicialização em seu sistema.

sudo systemctl enable acpid.service
Enabling a Service

Conclusão

Neste tutorial, você percebeu quão rapidamente pode parar, iniciar ou reiniciar serviços executando comandos systemctl no Ubuntu. Você também aprendeu que o comando systemctl permite gerenciar não apenas um, mas vários serviços simultaneamente.

Com esse conhecimento recém-adquirido, que tal automatizar o controle de serviços em seu sistema Ubuntu?

Source:
https://adamtheautomator.com/ubuntu-systemctl/