Systemd

Hello World 😁 💻

Hoje iremos falar sobre o atual e polêmico sistema de inicialização e gerenciamento de serviços (init system) do Linux, o systemd.

O que é systemd no Linux

O systemd é o gerenciador de sistema e de serviços usado pela maioria das distribuições Linux modernas. Ele é responsável principalmente por inicializar o sistema (boot) e controlar os serviços que rodam no sistema operacional. Ele é o primeiro processo importante que inicia após o kernel e gerencia praticamente tudo que roda depois.

No Linux, ele geralmente tem o PID 1, ou seja, é o primeiro processo do sistema.

Systemd no terminal.

Surgimento do systemd

Systemd foi criado em 2010 por Lennart Poettering e Kay Sievers ambos engenheiros da RedHat. Antes dele, o padrão era o SysVinit. Um sistema antigo, lá dos anos 80, que funcionava bem dentro do que se propunha, mas começou a mostrar limites com o tempo.

A inicialização era lenta porque tudo acontecia em sequência. Um serviço só começava depois que o anterior terminava. Além disso, era complicado lidar com dependências entre serviços, os logs ficavam espalhados e não existia uma forma muito clara de saber quando algo estava realmente pronto. Nada disso era exatamente “quebrado”, mas claramente não acompanhava mais a complexidade dos sistemas modernos.

Então surgiu a necessidade de criar um novo sistema de inicialização mais rápido, moderno e inteligente, que resultou no systemd.

O systemd foi lançado oficialmente em 30 de março de 2010, focado em paralelismo agressivo e no uso de cgroups do kernel para rastrear processos.

A grande polêmica

Mas nem todo mundo gostou dessa mudança.

Desde o começo, o systemd dividiu bastante a comunidade. Muita gente critica o fato de ele concentrar responsabilidades demais, indo contra aquela ideia clássica do Unix de “fazer uma coisa só, e fazer bem”.

Também existe a questão da complexidade. Ele não é exatamente simples de entender por completo, e isso incomoda quem prefere sistemas mais enxutos e previsíveis.

Por outro lado, quem defende argumenta que essa complexidade vem junto com ganhos reais: inicialização mais rápida, melhor controle dos serviços e um sistema mais consistente no geral.

No fim, é aquele tipo de discussão que não tem um “lado vencedor” claro.

Alternativas criadas

A controvérsia foi tão grande que algumas distros criaram alternativas:

  • OpenRC: Usado por Alpine Linux, Gentoo;
  • runit: Alternativa minimalista;
  • s6: Sistema de init baseado em supervisão;
  • Devuan: Distribuição criada especificamente para evitar systemd.

Impacto na comunidade Linux

Independentemente da opinião, o fato é que o systemd se espalhou.

Hoje ele está presente na maioria das distribuições e faz parte da base de muitas infraestruturas modernas. Não dá pra falar de Linux atual sem esbarrar nele em algum momento. Ele ajudou a reduzir o tempo de inicialização, melhorou a integração com ambientes gráficos e acabou se encaixando bem com o crescimento de containers e sistemas mais dinâmicos.

Entendendo melhor o que systemd faz

O systemd controla várias coisas importantes como por exemplo, a inicialização e gerenciamento de serviços. Quando o Linux liga:

  • BIOS/UEFI inicia;
  • Bootloader (ex: GRUB) carrega o kernel;
  • O kernel inicia o systemd;
  • O systemd inicia todos os serviços necessários.

Exemplos de serviços:

  • rede;
  • login (SSH);
  • banco de dados;
  • servidor web;
  • interface gráfica.

Gerenciamento de serviços (daemons)

Ele controla daemons (processos que rodam em background). Exemplo:

  • nginx;
  • docker;
  • ssh;
  • mysql.

Comandos comuns:

systemctl start mysql
systemctl stop mysql
systemctl restart mysql
systemctl status mysql

O systemctl é a ferramenta que conversa com o systemd.

Exemplo Ilustrativo do Systemd

Vamos usar uma analogia com um restaurante para explicar como o systemd funciona:

Antes do systemd (SysVinit) - Restaurante Desorganizado

Imagine um restaurante onde o gerente (SysVinit) faz tudo sequencialmente:

  1. Gerente chega: 10 minutos
  2. Gerente liga as luzes: 2 minutos
  3. Gerente espera as luzes ligarem completamente: 5 minutos
  4. Gerente abre a cozinha: 3 minutos
  5. Gerente espera a cozinha estar pronta: 10 minutos
  6. Gerente abre o caixa: 2 minutos
  7. Gerente espera o caixa estar pronto: 5 minutos
  8. Gerente chama os garçons: 1 minuto
  9. Gerente espera os garçons chegarem: 10 minutos
  10. Gerente abre a porta para clientes

Total: ~48 minutos para abrir.

Depois do Systemd - Restaurante Organizado

Agora imagine o gerente (systemd) sendo inteligente e dando orientações simultâneas para todos os departamentos do restaurante:

Gerente: "Vocês podem TODOS fazer isso ao mesmo tempo!"

  • Garçom 1: Liga as luzes (enquanto isso...)
  • Chefe: Abre a cozinha (enquanto isso...)
  • Caixa: Configura o sistema de pagamento (enquanto isso...)
  • Garçom 2: Prepara as mesas (enquanto isso...)

Total: ~10 minutos para abrir.

Representação em tirinha da diferença do SysVinit e do systemd.

Em resumo, o systemd é um gerenciador inteligente que:

  • Inicia serviços em paralelo: inicialização mais rápida;
  • Entende dependências: sabe quem precisa de quem;
  • Monitora serviços: reinicia automaticamente se caírem;
  • Centraliza logs: fácil de debugar problemas;
  • Gerencia recursos: controla memória e CPU de cada serviço.

É como a diferença entre um restaurante onde tudo é feito por uma pessoa sequencialmente vs. um restaurante bem organizado onde vários funcionários trabalham em paralelo.

Exemplo Prático

Vamos criar um arquivo de serviço de exemplo:

sudo nano /etc/systemd/system/meu-app.service

Comando para criação do arquivo do serviço

Comando no terminal

Criação do arquivo do serviço.

Agora iremos colocar o seguinte conteúdo dentro do arquivo:

[Unit]
Description=Minha Aplicação Web
After=network.target
# ↑ Diz: "Só inicie DEPOIS que a rede estiver pronta"

[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/user/app.py
Restart=always
# ↑ Diz: "Se a aplicação cair, reinicie automaticamente"

[Install]
WantedBy=multi-user.target
# ↑ Diz: "Inicie automaticamente no boot"
Conteúdo para colocar no arquivo.

Conteúdo para colocar no arquivo.

Conteúdo no arquivo.

Depois de criado, o arquivo do serviço aparece dentro da pasta /etc/systemd/system.

O serviço recém criado na pasta system do systemd.

Usando o serviço

Vamos usar alguns comandos para fazer o serviço funcionar e acompanhar o seu estado.

# Recarregar configuração
sudo systemctl daemon-reload

# Iniciar o serviço
sudo systemctl start meu-app

# Ver status
sudo systemctl status meu-app
Comandos para startar o serviço e acompanhar o seu estado.

Comandos para startar o serviço e acompanhar o seu estado.

Comandos no terminal e resultado do estado do serviço.

Para ver os logs do serviço, basta usar o seguinte comando:

journalctl -u meu-app -f

Comando para ver os logs em tempo real.

Logs do serviço.

Conclusão

O systemd mudou bastante a forma como o Linux funciona por baixo dos panos.

Ele trouxe ganhos claros em organização, controle e desempenho, mas também abriu espaço para discussões legítimas sobre complexidade e filosofia.

Particularmente, achei muito interessante entender não só como ele funciona, mas o contexto que levou à sua criação. Isso ajuda a enxergar que essas mudanças não acontecem do nada , elas vêm de necessidades reais.

No fim, gostando ou não, ele virou parte fundamental do Linux moderno.

E entender isso muda bastante a forma como a gente enxerga o sistema.

Espero que tenham gostado tanto quanto eu de entender um pouco mais sobre esse sistema de inicialização do Linux.

Obrigada pela atenção e até breve! 😁

Laryssa Ramos

Voltar para os artigos