systemd, processos e serviços
Diagnosticar um servidor com sintomas confusos e transformar um script solto em um serviço systemd que reinicia sozinho.
O que você vai aprender
- Diagnóstico rápido de CPU, memória, disco e portas
- Estrutura de uma unit file do systemd
- Habilitar, iniciar e checar o status de um serviço
- Restart automático em caso de falha
1. Diagnóstico operacional
Diagnóstico operacional começa por separar sintomas: processo parado, porta indisponível, disco cheio e serviço sem permissão exigem respostas diferentes. Antes de qualquer suposição, olhe os números.
systemctl status nginx
ps aux --sort=-%mem | head
free -h
df -h
ss -lntp
ss -lntp mostra quais processos estão escutando em quais portas — útil pra confirmar se um serviço realmente subiu ou se outra aplicação já ocupa a porta esperada.
2. Um serviço mínimo
Scripts rodados manualmente ou via nohup morrem quando a sessão termina e não voltam sozinhos depois de um reboot. Uma unit file resolve isso: define como o processo inicia, quem o executa e o que fazer se ele cair.
[Unit]
Description=Worker IRN
After=network-online.target
Wants=network-online.target
[Service]
User=worker
WorkingDirectory=/opt/worker
ExecStart=/opt/worker/.venv/bin/python worker.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
3. Ativando o serviço
Com o arquivo salvo em /etc/systemd/system/irn-worker.service, recarregue o systemd para que ele reconheça a nova unit, habilite o serviço para iniciar no boot e confirme que está rodando.
sudo systemctl daemon-reload
sudo systemctl enable --now irn-worker
systemctl status irn-worker
Restart=on-failure com RestartSec evita loops de reinício agressivos e dá tempo pro processo se recuperar de falhas transitórias.systemctl enable --now, confirme com systemctl status e teste o restart automático matando o processo com kill.