$ linux modulo_3

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

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
DICA DE PRODUÇÃO Restart=on-failure com RestartSec evita loops de reinício agressivos e dá tempo pro processo se recuperar de falhas transitórias.
EXERCÍCIO Escreva uma unit file para um script seu, habilite-a com systemctl enable --now, confirme com systemctl status e teste o restart automático matando o processo com kill.

Sumário do curso

Precisa de algo assim, sob medida pro seu negócio?

agendar diagnóstico gratuito →