0 9 1-7 * * Abrir no analisador de expressões cron Escrever 0 9 1-7 * 1 não funciona: quando os dois campos de dia estão definidos, o cron roda se qualquer um corresponder, então rodaria nos dias 1–7 e em toda segunda. Quartz e Spring suportam MON#1.
Campo a campo
| Campo | Valor | Corresponde a |
|---|---|---|
| Minuto | 0 | 0 |
| Hora | 9 | 9 |
| Dia do mês | 1-7 | 1, 2, 3, 4, 5, 6, 7 |
| Mês | * | Qualquer valor |
| Dia da semana | * | Qualquer valor |
Próximas execuções
Exemplo: as primeiras 6 execuções após 1 de janeiro de 2026 (UTC).
- seg., 5 de jan. de 2026, 09:00
- seg., 2 de fev. de 2026, 09:00
- seg., 2 de mar. de 2026, 09:00
- seg., 6 de abr. de 2026, 09:00
- seg., 4 de mai. de 2026, 09:00
- seg., 1 de jun. de 2026, 09:00
Versões prontas para usar
0 9 1-7 * * [ "$(date +\%u)" = 1 ] && /path/to/command Adicione a linha com crontab -e. Ela roda no fuso horário do servidor, a menos que CRON_TZ ou TZ esteja definido.
apiVersion: batch/v1
kind: CronJob
metadata:
name: first-monday-of-month
spec:
schedule: "0 9 1-7 * *"
timeZone: "Etc/UTC"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: job
image: busybox:1.36
command: ["/bin/sh", "-c", "date; echo run"] Defina spec.timeZone (Kubernetes 1.27+); sem ele, o agendamento segue o fuso do controller manager, normalmente UTC.
on:
schedule:
- cron: '0 9 1-7 * *'
workflow_dispatch: O GitHub Actions sempre usa UTC, aceita intervalos de 5 minutos ou mais e pode atrasar execuções agendadas sob carga.
0 0 9 ? * MON#1 O Quartz coloca os segundos primeiro e exige ? no dia do mês ou no dia da semana. Os dias vão de 1 a 7 começando no domingo, então nomes são mais seguros.
@Scheduled(cron = "0 0 9 * * MON#1") O Spring @Scheduled(cron = …) usa seis campos: segundos e depois os cinco de sempre.
Perguntas frequentes
› Por que 0 9 1-7 * 1 roda vezes demais?
O cron combina com OU o dia do mês e o dia da semana quando ambos estão restritos, então roda do dia 1 ao 7 e também em toda segunda.
› Em qual fuso horário 0 9 1-7 * * é executado?
O cron usa o fuso horário da máquina ou do serviço que o executa. No Linux é o fuso do sistema, a menos que CRON_TZ ou TZ esteja definido; CronJobs do Kubernetes aceitam spec.timeZone; o GitHub Actions sempre usa UTC.
› Como verificar este agendamento antes de publicar?
Abra 0 9 1-7 * * no analisador de expressões cron deste site. Ele explica cada campo e lista as próximas execuções no seu horário local ou em UTC, tudo no navegador.