0 0 * * *Campos
| Minuto | 0 | 0 |
|---|---|---|
| Hora | 0 | 0 |
| Dia do mês | * | qualquer |
| Mês | * | qualquer |
| Dia da semana | * | qualquer |
Onde usar
| crontab | 0 0 * * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "0 0 * * *" (on.schedule) |
| Kubernetes CronJob | schedule: "0 0 * * *" |
O crontab usa o fuso horário do servidor; o GitHub Actions sempre usa UTC.
Bom saber
0 0 * * * roda às 00:00 no fuso horário do servidor, que em máquinas na nuvem costuma ser UTC, e não a sua meia-noite local; confira com timedatectl. @daily e @midnight são atalhos para o mesmo agendamento. Meia-noite é o padrão de todo mundo, então backups, relatórios e tarefas de outros tenants disputam disco e banco de dados nesse horário; um horário mais tranquilo, como 17 0 * * *, costuma ser mais gentil.
O cron trata um % solto como quebra de linha, então escape-o dentro do crontab: date -d yesterday +\%F dá a data que uma tarefa noturna normalmente deve processar. Se o servidor estiver desligado à meia-noite, o cron padrão não recupera a execução; o anacron ou um timer do systemd com Persistent=true recupera. Adicione um dead man’s switch, como Healthchecks.io ou Cronitor, para saber quando a tarefa para silenciosamente.