--- tags: Linux, Systemd, systemctl --- # Introdução ao Systemd ![](https://i.imgur.com/nz25REw.png) 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á.