Quer ter controle total sobre seu Linux e automatizar tarefas como um profissional? Por trás da orquestra silenciosa que inicia seu sistema está o sistema de init — o maestro invisível que garante que tudo funcione perfeitamente desde o boot até o desligamento.
Compreender como o init funciona vai além da curiosidade técnica: permite resolver problemas, otimizar o desempenho da inicialização e, o mais poderoso, criar e controlar seus próprios serviços personalizados.
Neste guia, vamos desmistificar os principais sistemas de init (systemd, OpenRC, Runit e s6) e ensinar, passo a passo, como criar serviços próprios, tornando você o mestre do seu sistema Linux.
O que são sistemas de Init (e por pue eles existem)?
Um sistema de init é o primeiro processo iniciado pelo kernel após o boot e é responsável por iniciar, gerenciar e encerrar todos os demais processos do sistema. Em essência, ele é o “pai” de todos os processos.
Breve histórico:
- SysVinit: O tradicional init baseado em scripts sequenciais.
- systemd: Moderno, paralelo e o padrão de fato na maioria das distros.
- OpenRC, Runit e s6: Alternativas leves, rápidas e flexíveis para usuários avançados.
Por que isso importa para você? Porque é com o init que você pode automatizar tarefas, iniciar programas no boot e resolver erros relacionados a serviços que não sobem corretamente.
systemd: O Gigante Moderno (e Mais Comum)
Filosofia
O systemd
adota uma abordagem event-driven, com paralelização agressiva, foco em desempenho e centralização de funções (logging, temporizadores, rede, etc.). Além disso, temos o nosso guia sobre o comando systemd.
Gerenciamento básico
systemctl status nome_do_servico
systemctl start nome_do_servico
systemctl stop nome_do_servico
systemctl enable nome_do_servico
systemctl disable nome_do_servico
systemctl restart nome_do_servico
systemctl --user daemon-reload
Criando um serviço customizado com systemd
Crie um script para ser executado:
nano ~/meu-script.sh
#!/bin/bash
echo "Rodando meu serviço personalizado" >> ~/log-servico.txt
chmod +x ~/meu-script.sh
Depois, crie o serviço:
nano ~/.config/systemd/user/meu-servico.service
[Unit]
Description=Meu serviço customizado
[Service]
ExecStart=/home/usuario/meu-script.sh
[Install]
WantedBy=default.target
Ative o serviço:
systemctl --user daemon-reload
systemctl --user enable --now meu-servico.service

OpenRC: A alternativa tradicional e flexível
Filosofia
Baseado em scripts shell com funções start()
, stop()
, depend()
. Muito usado em Gentoo e Artix.
Gerenciamento básico
rc-service nome_do_servico status
rc-service nome_do_servico start
rc-service nome_do_servico stop
rc-update add nome_do_servico default
rc-update del nome_do_servico default
Criando um serviço com OpenRC
O comando rc-service é usado em distribuições que usam OpenRC, como:
- Alpine Linux
- Gentoo
- Void Linux (quando não usa runit)
nano /etc/init.d/meu-servico
#!/sbin/openrc-run
depend() {
need net
}
start() {
ebegin "Iniciando meu-servico.sh"
/home/usuario/meu-script.sh
eend $?
}
chmod +x /etc/init.d/meu-servico
rc-update add meu-servico default
rc-service meu-servico start
Runit e s6: Abordagens minimalistas e robustas
Filosofia
Ambos seguem a premissa “faça uma coisa e faça bem“, oferecendo inicialização rápida, supervisão constante e simplicidade.
Runit
Gerenciamento
sv status nome_do_servico
sv start nome_do_servico
sv stop nome_do_servico
Criando um Serviço
mkdir -p /etc/sv/meu-servico
nano /etc/sv/meu-servico/run
#!/bin/sh
exec /home/usuario/meu-script.sh
chmod +x /etc/sv/meu-servico/run
ln -s /etc/sv/meu-servico /var/service/
Nota: Esse link simbólico garante que o serviço seja iniciado no boot automaticamente. Caso você não tenha o diretório /var/service terá que criar com o comando sudo mkdir -p /var/service.
s6
Filosofia
O s6 é baseado em estruturas de diretórios, onde cada serviço é supervisionado por processos como s6-supervise
, iniciado por s6-svscan
.
s6-svscan
: Scanner de serviços – monitora diretórios e inicia supervisores.s6-supervise
: Mantém o serviço em execução, reiniciando-o em caso de falha.
Criando um Serviço
mkdir -p ~/s6-servicos/meu-servico
nano ~/s6-servicos/meu-servico/run
#!/bin/sh
exec /home/usuario/meu-script.sh
chmod +x ~/s6-servicos/meu-servico/run
Importante: Para que o s6 supervisione seu serviço, o s6-svscan
(o scanner principal de serviços do s6) precisa estar rodando e apontando para o diretório pai que contém seus serviços (ex: ~/s6-servicos/
). A forma exata de iniciar e configurar o s6-svscan
varia significativamente se o s6 é o sistema init principal do seu sistema ou se está sendo usado de forma mais isolada.
Solução de problemas comuns
- Serviço não inicia: Verifique sintaxe e permissões. Para
systemd
, usejournalctl -xe
. - Conflitos de porta: Use
lsof -i :porta
ounetstat -tuln
. - Erros genéricos: Consulte
/var/log/syslog
,dmesg
ou logs específicos do init.
Conclusão: Você está próximo do controle total
Agora que você sabe criar e gerenciar seus próprios serviços em diferentes inits, seu domínio sobre o Linux passou para outro nível. Não importa qual distribuição use, o conhecimento que você adquiriu aqui te coloca entre os que realmente controlam o sistema.
Compartilhe nos comentários quais serviços você criou, ou se teve algum desafio — vamos aprender juntos!