Como agendar o reinício automático de um serviço travado no VPS imprimir

  • 0

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.

  1. Abra a configuração do serviço para edição:
    sudo systemctl edit nome-do-servico
  2. No editor que abrir, adicione estas linhas:
    [Service]
    Restart=on-failure
    RestartSec=10
  3. 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.

  1. Crie o script de verificação:
    sudo nano /usr/local/bin/checar-servico.sh
  2. Cole este conteúdo (troque nome-do-servico pelo nome real):
    #!/bin/bash
    if ! systemctl is-active --quiet nome-do-servico; then
        systemctl restart nome-do-servico
    fi
  3. Salve e dê permissão de execução:
    sudo chmod +x /usr/local/bin/checar-servico.sh
  4. Abra o agendador de tarefas do usuário root:
    sudo crontab -e
  5. Adicione a linha abaixo para checar a cada 5 minutos:
    */5 * * * * /usr/local/bin/checar-servico.sh
  6. 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 cron roda com um PATH mais enxuto que o seu terminal normal — por isso, sempre use caminhos completos (como systemctl com 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! 💛


Esta resposta lhe foi útil?

« Retornar