---
tags: Linux, Systemd, systemctl
---
# Introdução ao Systemd

Systemd é um sistema *init* usado em sistemas operacionais baseados em Linux que foi desenvolvido com o objetivo de melhorar o desempenho, segurança e facilidade de gerenciamento dos serviços do sistema operacional.
O *"D"* em systemd significa "system daemon" (em português, "daemon do sistema"). Um daemon é um processo que é executado em segundo plano, sem interação direta do usuário, e que geralmente executa uma determinada tarefa ou serviço em um sistema operacional. No contexto do systemd, os daemons do sistema são responsáveis por inicializar, gerenciar e monitorar serviços e processos em segundo plano que são executados em um sistema Linux.
> Cabe destacar também que um dos principais objetivos do systemd é a unificação e padronização de configurações básicas e comportamentos de serviços do Sistema Operacional Linux entre as diversas distribuições existentes no mercado.
Assim, O systemd é um conjunto de softwares que fornecem blocos de construção fundamentais para um sistema operacional Linux. Ele é composto por vários componentes de controle, como o systemd-journald, que gerencia o registro do sistema e o systemd-networkd, que gerencia a configuração de rede e outros daemons que abordaremos neste artigo. Em resumo, Systemd é uma ferramenta muito poderosa que pode ser usada para gerenciar desde a inicialização do sistema, serviços em segundo plano, pontos de montagem de sistemas de arquivos, processos e muito mais, vejamos...
## Systemctl básico
O comando principal para gerenciar serviços com systemd é o systemctl. Ele permite ao usuário controlar serviços individuais, ver informações sobre o status dos serviços, verificar o log de serviços, iniciar ou parar serviços, entre outras coisas. Aqui estão alguns exemplos práticos de como o systemd/systemctl podem ser usados no gerenciamento de um sistema Linux:
#### Iniciando e parando serviços:
```
# Iniciar o serviço Apache
sudo systemctl start apache2
# Parar o serviço Apache
sudo systemctl stop apache2
```
#### Habilitando e desabilitando serviços na inicialização do sistema:
```
# Habilitar o serviço Apache na inicialização do sistema
sudo systemctl enable apache2
# Desabilitar o serviço Apache na inicialização do sistema
sudo systemctl disable apache2
```
#### Verificando o status do serviço:
```
# Verificar o status do serviço Apache
sudo systemctl status apache2
```
#### Reiniciando serviços:
```
# Reiniciar o serviço Apache
sudo systemctl restart apache2
```
#### Recarregando as configurações de um serviço sem reiniciá-lo:
```
# Recarregar as configurações do serviço Apache
sudo systemctl reload apache2
```
## Exemplos avançados
Além do gerenciamento de serviços, por meio do systemctl, o systemd também oferece recursos de gerenciamento de processos avançados, como cgroups, que permite limitar e monitorar recursos de CPU, memória, E/S e outros de processos individuais ou grupos de processos. Ele também pode gerenciar pontos de montagem de sistema de arquivos, unidades de tempo e muito mais.
#### Gerenciando processos usando cgroups:
```
# Listar todos os grupos de processos atuais
sudo systemd-cgls
# Monitorar a utilização da CPU de um grupo de processos
sudo systemctl status user-1000.slice
# Limitar a quantidade de CPU que um processo pode usar
sudo systemctl set-property --runtime -- user.slice CPUQuota=50%
# Limitar a quantidade de memória que um grupo de processos pode usar
sudo systemctl set-property --runtime -- user.slice MemoryHigh=500M
```
#### Gerenciando pontos de montagem do sistema de arquivos:
```
# Montar um sistema de arquivos
sudo systemctl start mnt-hd1.mount
# Desmontar um sistema de arquivos:
sudo systemctl stop mnt-hd1.mount
```
#### Gerenciando a inicialização do sistema:
```
# Listar os alvos de inicialização do sistema disponíveis
sudo systemctl list-units --type target
# Mudar o alvo de inicialização atual do sistema
sudo systemctl isolate multi-user.target
# Mostrar a unidade de inicialização padrão atual do sistema
sudo systemctl get-default
# Configurar uma nova unidade de inicialização padrão para o sistema
sudo systemctl set-default graphical.target
```
Esses são apenas alguns exemplos do que o systemd/systemctl podem fazer. Mas não é só isso, como dito anteriormente, o systemd fornece um conjunto de ferramentas de gerenciamento do sistema (que trataremos em detalhes nos próximos artigos), muitas das quais têm um nome terminado em *ctl*, como journalctl e timedatectl.
Essas ferramentas ou *componentes de controle (ctrls)* são todas parte do systemd e são projetadas não só para facilitar a administração do sistema, mas também a solução de problemas.
### Principais Componentes
#### systemctl
Como visto, é usado para controlar e gerenciar serviços do sistema, como iniciar e parar serviços, habilitar ou desabilitar serviços na inicialização do sistema e verificar o status dos serviços.
#### timedatectl
É usado para gerenciar as configurações de data e hora do sistema, incluindo o fuso horário, data e hora.
#### hostnamectl
É usado para gerenciar as configurações de nome de host do sistema, incluindo o nome de host, o nome de domínio e outras informações de rede.
#### loginctl
É usado para gerenciar sessões de usuário e informações de login, incluindo o controle de sessões ativas, o bloqueio de contas de usuário e a alteração de configurações de login.
## Conclusão
O systemd é um sistema de gerenciamento de serviços e processos moderno e eficiente que substituiu o antigo sistema init em distribuições Linux. Ele fornece uma série de recursos, como inicialização paralela de serviços e controle de recursos avançados que torman a administração de sistemas operacionais Linux mais simples.
Cada componente de controle possui seus próprios recursos e opções de linha de comando, então é uma boa ideia ler a documentação correspondente para aprender como usá-las de forma eficaz. Embora possa haver alguma curva de aprendizado na adoção do systemd, a maioria dos usuários e administradores de sistemas Linux achará que a transição ou imersão vale a pena, já que o systemd torna a administração do sistema mais fácil e mais eficiente.
## Próximas abordagens
No próximo artigo desta série, trataremos em detalhes a utilização de outros *daemons* de controle e mais recursos do systemd como o systemd-analyze, usado para analisar o desempenho do sistema, incluindo o tempo de inicialização do sistema operacional e o tempo de inicialização dos serviços.
Até lá.