Agende jobs com o cron
Leia e escreva agendamentos de crontab e evite as armadilhas clássicas do cron.
- Ler e escrever os cinco campos de um agendamento do cron
- Editar uma crontab e capturar a saída de um job
- Explicar por que um script que funciona à mão pode falhar no cron
Backups às 2 da manhã, limpeza de logs todo domingo, um relatório todo dia útil: o cron roda comandos num agendamento. Edite o seu agendamento com crontab -e e liste-o com crontab -l. Cada linha tem cinco campos de tempo e depois o comando:
1┌───── minute (0-59)
2│ ┌─── hour (0-23)
3│ │ ┌─ day of month (1-31)
4│ │ │ ┌ month (1-12)
5│ │ │ │ ┌ day of week (0-7, where 0 and 7 are Sunday)
630 2 * * * /home/crew/backup.sh* significa todo valor, */15 significa a cada 15, 1-5 é um intervalo e 1,15 é uma lista.
Experimente
Até 15 XPEscreva o agendamento
Digite um agendamento e confira as próximas execuções, mostradas em UTC a partir de quinta-feira, 5 de novembro de 2026, às 09:00. Um agendamento passa quando dispara nos horários certos.
Desafio 1 de 5: Rode um backup todo dia às 02:30.
- minuto
- *
- hora
- *
- dia
- *
- mês
- *
- dia da semana
- *
- qui., 5 de nov., 09:01
- qui., 5 de nov., 09:02
- qui., 5 de nov., 09:03
- qui., 5 de nov., 09:04
- qui., 5 de nov., 09:05
Por que funcionou à mão, mas não no cron
O cron roda o seu comando num ambiente vazio, e isso pega todo mundo:
- O PATH é mínimo, então os comandos podem não ser encontrados. Use caminhos completos, ou defina o PATH no topo da crontab.
- O seu .bashrc não é carregado, então aliases e variáveis faltam.
- O diretório de trabalho é a sua pasta pessoal, então caminhos relativos podem quebrar.
- A saída some, a menos que você a capture:
30 2 * * * /home/crew/backup.sh >> /home/crew/backup.log 2>&1 - O fuso horário é o do servidor, que muitas vezes é UTC.
Experimente
Até 15 XPEncontre o que vai falhar
Esta crontab funciona perfeitamente quando cada comando é rodado à mão. Clique no que provavelmente vai falhar no cron.
Clique em todos os trechos suspeitos. São 3.
Principais conclusões
Cinco campos: minuto, hora, dia do mês, mês, dia da semana.
Use caminhos completos, porque o ambiente do cron é vazio.
Sempre capture a saída com >> file 2>&1.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em scripts Bash
Escreva um script no editor e execute-o de verdade com entradas de exemplo. Cada execução ganha um sandbox Linux novo com Bash 5.2 e as ferramentas GNU no Wandbox, um serviço público gratuito, então experimente à vontade, até com rm. Seu script e a entrada de teste são enviados para lá.
Leia a crontab
O stdin é uma crontab. Pule as linhas em branco e as que começam com #. Para cada job, imprima o comando dele (tudo depois dos cinco campos de tempo). Depois imprima N jobs.
- Pula os comentários
- Crontab vazia
Seu script roda com Bash 5.2 e ferramentas GNU no Wandbox, um serviço público gratuito, em um sandbox novo a cada execução. Seu script e a entrada de teste são enviados a esse serviço.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…