Como agendar o reinício automático de um serviço travado no VPS
Oi! Aqui é a Sensei da GeHost 🙂 Você já passou por aquela situação chata onde um serviço do seu VPS
"trava" — para de responder, mas o processo continua lá, sem realmente funcionar? A boa notícia é que dá
pra deixar o próprio servidor cuidar disso sozinho, reiniciando o serviço automaticamente quando ele
travar. Vamos aprender duas formas de fazer isso: uma mais simples (com cron) e outra mais
robusta (deixando o systemd fazer o trabalho pesado).
Este guia pressupõe que você já tem acesso via SSH ao seu servidor e alguma familiaridade com o terminal. Se você ainda não tem certeza de como acessar via SSH, dá uma olhada nos outros artigos da categoria "SSH & Avançado" antes de continuar.
Passo 1 — Descubra o nome exato do serviço
Antes de agendar qualquer coisa, você precisa saber o nome do serviço que está travando (por exemplo,
nginx, mysql, ou o nome do seu processo). Liste os serviços ativos com:
systemctl list-units --type=service
E confira o status específico dele com:
systemctl status nome-do-servico
Guarde esse nome — vamos usar ele em todos os passos seguintes.
Passo 2 — O jeito mais robusto: deixar o systemd reiniciar sozinho
Se o seu serviço roda como um serviço do systemd (a maioria roda), a forma mais confiável
de garantir o reinício automático é configurar isso direto na definição do serviço — sem precisar de
agendamento nenhum. O systemd fica de olho e reinicia na hora, assim que percebe a queda.
- Abra a configuração do serviço para edição:
sudo systemctl edit nome-do-servico - No editor que abrir, adicione estas linhas:
[Service] Restart=on-failure RestartSec=10 - Salve, saia do editor e recarregue as configurações:
sudo systemctl daemon-reload sudo systemctl restart nome-do-servico
Pronto! Agora, se esse serviço cair ou travar de um jeito que o systemd detecte como falha, ele vai tentar subir de novo automaticamente após 10 segundos.
Passo 3 — Alternativa (ou complemento) com cron: um "verificador" periódico
Nem todo travamento é detectado como "falha" pelo systemd — às vezes o processo continua rodando, só
não responde mais. Nesse caso, um pequeno script de verificação agendado no cron é uma ótima
rede de segurança extra.
- Crie o script de verificação:
sudo nano /usr/local/bin/checar-servico.sh - Cole este conteúdo (troque
nome-do-servicopelo nome real):#!/bin/bash if ! systemctl is-active --quiet nome-do-servico; then systemctl restart nome-do-servico fi - Salve e dê permissão de execução:
sudo chmod +x /usr/local/bin/checar-servico.sh - Abra o agendador de tarefas do usuário root:
sudo crontab -e - Adicione a linha abaixo para checar a cada 5 minutos:
*/5 * * * * /usr/local/bin/checar-servico.sh - Salve e feche. Pronto, o cron já está agendado!
Passo 4 — Teste antes de confiar de olhos fechados
Nunca deixe uma automação "no escuro". Force uma parada do serviço e veja se ele volta sozinho:
sudo systemctl stop nome-do-servico
Se você configurou pelo systemd (Passo 2), ele deve voltar quase na hora. Se está usando o script via cron (Passo 3), aguarde até o próximo intervalo agendado e confira com:
systemctl status nome-do-servico
Passo 5 — Acompanhe os logs de vez em quando
Vale a pena dar uma espiada de tempos em tempos para entender por que o serviço está travando — o reinício automático resolve o sintoma, mas descobrir a causa evita dor de cabeça no futuro. Use:
journalctl -u nome-do-servico -f
Dicas da Sensei:
- Evite aplicar reinício automático "cego" em serviços com estado sensível, como bancos de dados — nesses casos, prefira revisar os logs antes de reiniciar, pra não mascarar um problema maior.
- O
cronroda com umPATHmais enxuto que o seu terminal normal — por isso, sempre use caminhos completos (comosystemctlcom o caminho absoluto, se necessário) dentro do script.- Se o mesmo serviço travar com muita frequência, isso geralmente é sinal de outro problema (memória insuficiente, configuração incorreta, bug na aplicação) — o reinício automático é uma rede de segurança, não uma solução definitiva.
Se travar em algum passo ou tiver dúvida sobre o seu ambiente específico, é só chamar o suporte da GeHost. Um abraço e até o próximo guia! 💛