Servidor & DevOps 38 visualizações

Como automatizar tarefas recorrentes no servidor usando crontab pelo terminal

Ver no WHMCS

O que é o crontab e por que ele vai facilitar sua vida

Imagina ter que entrar todo santo dia no servidor pra rodar aquele mesmo comando — fazer um backup, limpar arquivos temporários, disparar um relatório. Cansativo, né? É exatamente pra isso que existe o crontab: um "agendador de tarefas" que roda no servidor e executa comandos automaticamente, nos horários que você definir, sem você precisar levantar um dedo depois de configurado.

Neste guia eu vou te mostrar, passo a passo e sem enrolação, como usar o crontab pelo terminal. Bora lá?

Antes de começar: você precisa de acesso ao terminal

O crontab é configurado por linha de comando, então você vai precisar de acesso via terminal (SSH) ao servidor. Isso depende do que está incluso no seu plano de hospedagem — a disponibilidade e a forma de liberar esse acesso podem variar.

Dica da Sensei: se você não tem certeza se seu plano inclui acesso via terminal, dê uma olhada no painel.gehost.com.br ou fale com o suporte antes de continuar. Assim você já começa com o pé direito, sem travar no meio do caminho.

Se o seu caso for hospedagem em cPanel sem acesso SSH liberado, não se preocupe: muitas dessas mesmas tarefas agendadas também podem ser configuradas por uma interface visual dentro do próprio painel, sem precisar digitar comando nenhum. Se for esse o seu cenário, o suporte te orienta certinho sobre qual caminho seguir.

Acessando o terminal

  1. Abra o aplicativo de terminal do seu computador (no Windows pode ser o PowerShell ou um cliente SSH; no Mac/Linux, o próprio Terminal).
  2. Conecte-se ao servidor usando os dados de acesso (usuário, endereço e porta) que constam no seu contrato ou no painel do cliente.
  3. Uma vez conectado, você já está pronto pra trabalhar com o crontab.

Entendendo a sintaxe do crontab

Toda tarefa agendada no crontab segue um padrão de 5 campos, que representam quando o comando vai rodar, seguidos do comando em si:

* * * * * comando-a-ser-executado

Cada asterisco representa uma unidade de tempo, nesta ordem:

  • Minuto (0 a 59)
  • Hora (0 a 23)
  • Dia do mês (1 a 31)
  • Mês (1 a 12)
  • Dia da semana (0 a 6, sendo 0 = domingo)

Quando você deixa um campo com asterisco (*), está dizendo "vale pra todos". Alguns exemplos pra fixar:

  • 0 3 * * * — todo dia, às 3h da manhã.
  • */30 * * * * — a cada 30 minutos.
  • 0 9 * * 1 — toda segunda-feira, às 9h.
  • 0 0 1 * * — no dia 1 de cada mês, à meia-noite.

Passo a passo para criar sua primeira tarefa

  1. Com o terminal conectado ao servidor, digite o comando abaixo e pressione Enter:
    crontab -e
  2. Isso vai abrir um editor de texto simples direto no terminal (normalmente o nano ou o vi). Não se assuste, é só texto mesmo.
  3. Vá até uma linha em branco no final do arquivo e escreva sua tarefa, seguindo a sintaxe que vimos acima. Por exemplo, pra rodar um script todo dia às 2h da manhã:
    0 2 * * * /caminho/do/seu/script.sh
  4. Salve o arquivo e feche o editor. No nano, geralmente é Ctrl+O pra salvar e Ctrl+X pra sair.
  5. Pronto! O sistema já confirma que o crontab foi instalado. A partir de agora, sua tarefa vai rodar sozinha, no horário combinado.

Quer conferir o que já está agendado?

A qualquer momento, você pode listar as tarefas que já estão programadas com:

crontab -l

E se precisar remover tudo (use com cuidado, é definitivo):

crontab -r

Boas práticas pra não ter dor de cabeça

Dica da Sensei: comece sempre testando o comando manualmente no terminal antes de colocar no crontab. Se ele não funcionar rodando na mão, também não vai funcionar agendado — só que dessa vez, calado, sem te avisar do erro.
Dica da Sensei: use sempre o caminho completo dos arquivos e scripts (ex.: /home/seuusuario/scripts/backup.sh) em vez de caminhos relativos. O crontab não sabe de qual pasta você "estava" quando escreveu o comando.
Dica da Sensei: redirecione a saída do comando pra um arquivo de log, assim você consegue conferir depois se tudo rodou certinho:
0 2 * * * /caminho/do/script.sh >> /caminho/do/log.txt 2>&1
Dica da Sensei: não exagere na frequência. Rodar uma tarefa pesada a cada minuto pode sobrecarregar o servidor à toa. Pense no quanto aquela tarefa realmente precisa ser repetida.

Erros comuns (e como evitar)

  • Esquecer o caminho completo dos comandos e scripts — é a causa número um de "por que minha tarefa não rodou?".
  • Confundir a ordem dos campos (minuto, hora, dia, mês, dia da semana) — sempre volte aqui pra conferir a ordem se tiver dúvida.
  • Não dar permissão de execução ao script. Se for um arquivo .sh, lembre de rodar chmod +x script.sh antes de agendá-lo.
  • Agendar sem testar antes — sempre rode o comando manualmente primeiro.

Quando chamar o suporte

Se você seguiu os passos e a tarefa não está rodando como esperado, ou se não tem certeza se seu plano permite acesso via terminal, não perca tempo tentando adivinhar: fale com o suporte da GeHost ou consulte o painel.gehost.com.br. A gente prefere te ajudar a resolver rápido do que ver você travado numa tela de terminal por horas. 🙂

Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.