Como automatizar a execução de um script no seu VPS todo dia de madrugada ⏰
Oi! Aqui é a Sensei da GeHost 🥋 e hoje eu vou te ensinar uma mágica simples que vai te poupar horas de trabalho manual: fazer o seu servidor rodar um script sozinho, todo santo dia, na hora que você quiser — sem você precisar acordar de madrugada pra apertar um botão. Essa "mágica" tem nome: cron, o agendador de tarefas que já vem instalado em praticamente todo servidor Linux.
Se você tem um script de backup, de limpeza de arquivos temporários, de disparo de relatório ou qualquer rotina que precisa rodar sempre no mesmo horário, este guia é pra você. Vamos com calma, passo a passo. 💙
O que é o cron, afinal?
Pensa no cron como um "despertador" do servidor. Você diz pra ele: "todo dia, às 3 da manhã, execute este script" — e ele obedece, sem falhar, sem esquecer, sem precisar que ninguém esteja logado no servidor na hora. Cada agendamento desses se chama cron job (ou "tarefa cron").
💡 Dica da Sensei: madrugada é o horário preferido pra esse tipo de rotina justamente porque o servidor costuma ter menos acesso de visitantes nesse período — o script roda com menos concorrência de recursos e ninguém sente diferença no site.
Passo 1 — Acesse o servidor via SSH
Pra agendar uma tarefa cron você vai precisar entrar no servidor pelo terminal (SSH). Se você já tem esse acesso liberado no seu plano, conecte normalmente com o cliente SSH de sua preferência (Terminal, PuTTY, etc.), usando o usuário e a senha (ou chave) que você já utiliza.
Se você não sabe se o seu plano tem acesso SSH liberado, ou não sabe seus dados de acesso, dá uma olhada no painel.gehost.com.br ou fala com a nossa equipe de suporte — a gente confirma certinho pra você.
Passo 2 — Abra a lista de tarefas agendadas (crontab)
Já dentro do servidor, digite o comando abaixo e aperte Enter:
crontab -e
Isso abre um editor de texto simples (geralmente o nano ou o vi) onde ficam listadas todas as suas tarefas agendadas. Se for a primeira vez, a lista vai estar vazia — é normal!
Passo 3 — Entenda a "receita" do agendamento
Uma linha de cron sempre segue este formato, com 5 campos de tempo antes do comando:
- minuto (0-59)
- hora (0-23)
- dia do mês (1-31)
- mês (1-12)
- dia da semana (0-7, onde 0 e 7 são domingo)
Cada campo que você deixa com um asterisco * significa "todo/qualquer". Então, pra rodar algo todo dia às 3h da manhã, a linha fica assim:
0 3 * * * /caminho/completo/para/seu-script.sh
Traduzindo: minuto 0, hora 3, todo dia do mês, todo mês, todo dia da semana → ou seja, todos os dias, às 03:00.
💡 Dica da Sensei: sempre use o caminho completo do script (ex.:/home/seuusuario/scripts/backup.sh) e não um caminho relativo (ex.:./backup.sh). O cron não sabe de qual pasta você "estava" quando escreveu o comando — se o caminho não for completo, ele simplesmente não vai achar o arquivo.
Passo 4 — Confirme que o script tem permissão pra rodar
Antes de agendar, garanta que o script pode ser executado. No terminal, rode:
chmod +x /caminho/completo/para/seu-script.sh
Isso dá "permissão de execução" ao arquivo — sem isso, mesmo com o horário certinho, o cron não vai conseguir rodar o script.
Passo 5 — Salve e confira se a tarefa foi registrada
Depois de digitar a linha do agendamento no editor, salve e feche (no nano, geralmente é Ctrl+O pra salvar e Ctrl+X pra sair). Pra conferir se deu tudo certo, rode:
crontab -l
Esse comando lista todas as tarefas agendadas ativas. Se a sua linha aparecer ali, prontinho — o servidor já sabe que tem um compromisso de madrugada! 🌙
Passo 6 — Guarde um "log" do que aconteceu
Uma boa prática é registrar a saída do script num arquivo de log, assim você consegue conferir depois se tudo rodou certo (sem precisar acordar às 3h pra ver ao vivo). Basta ajustar a linha assim:
0 3 * * * /caminho/completo/para/seu-script.sh >> /caminho/completo/para/log.txt 2>&1
Isso salva tanto a saída normal quanto eventuais erros no arquivo log.txt, pra você revisar quando quiser.
💡 Dica da Sensei: comece testando o horário com algo simples, tipo agendar pra rodar em 2 minutos e ver se o log foi gerado certinho. Depois de confirmar que está funcionando, aí sim ajusta pro horário de madrugada definitivo. Isso evita aquela agonia de esperar até amanhã pra saber se deu certo. 😅Erros comuns (e como evitar)
- Caminho incompleto do script: sempre use o caminho absoluto, começando com
/home/....- Script sem permissão de execução: lembre do
chmod +xantes de agendar.- Fuso horário diferente do esperado: o horário do cron segue o fuso configurado no servidor — se a hora que rodou não bateu com o que você esperava, vale confirmar esse detalhe com o nosso suporte.
- Script depende de outro programa não encontrado: o cron roda com um ambiente mais "enxuto" que o seu terminal normal. Se o script usa algum comando específico, é mais seguro referenciar o caminho completo dele também (ex.:
/usr/bin/python3em vez de sópython3).Precisa de ajuda?
Se na hora de mexer com SSH e crontab você travar em algum passo, sem problema nenhum — pode chamar a gente! É exatamente esse tipo de coisa "avançada" que o nosso time curte resolver junto com você. E lembra: todo serviço entregue pela GeHost já vem com suporte gratuito nos primeiros 30 dias após a entrega, então aproveita essa janela pra tirar qualquer dúvida. 🤝
Prontinho! Agora seu script tem um "despertador" só dele, trabalhando de madrugada enquanto você dorme tranquilo. 😴✨