Carregando
0x170Lição 24 de 28

Agende jobs com o cron

Leia e escreva agendamentos de crontab e evite as armadilhas clássicas do cron.

20 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • 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 XP

Escreva 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
*
Próximas execuções (UTC)
  1. qui., 5 de nov., 09:01
  2. qui., 5 de nov., 09:02
  3. qui., 5 de nov., 09:03
  4. qui., 5 de nov., 09:04
  5. 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 XP

Encontre o que vai falhar

Esta crontab funciona perfeitamente quando cada comando é rodado à mão. Clique no que provavelmente vai falhar no cron.

crontab -l (rodada 1 de 1)Sinais encontrados 0/0

Clique em todos os trechos suspeitos. São 3.

# Nightly jobs 0 2 * * * ./backup.sh */5 * * * * ll /var/log > /tmp/list 0 3 * * * /home/crew/sync.sh 0 4 * * 0 /home/crew/rotate.sh >> /home/crew/rotate.log 2>&1

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á.

Exercício 1

Leia a crontab

+25 XP

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
script.sh
Carregando editor…

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…