Sintaxe de Expressão Cron: Um Guia Completo com Exemplos
Sintaxe de Expressão Cron
O cron é o agendador de trabalhos padrão em sistemas Unix-like. Toda expressão cron define um agendamento em uma string compacta que especifica quando um comando deve ser executado. Entender a sintaxe é essencial para automatizar backups, rotação de logs e tarefas de manutenção.
O Formato de 5 Campos
Uma expressão cron padrão tem cinco campos separados por espaços:
* * * * *
| | | | |
| | | | +----- Day of the Week (0-7, 0 and 7 = Sunday)
| | | +------- Month (1-12)
| | +--------- Day of the Month (1-31)
| +----------- Hour (0-23)
+------------- Minute (0-59)
Detalhes dos Campos
| Campo | Intervalo | Caracteres Especiais | Exemplo |
|-------|-----------|----------------------|---------|
| Minuto | 0-59 | , - * / | 30 = no minuto 30 |
| Hora | 0-23 | , - * / | 6 = às 6h |
| Dia do Mês | 1-31 | , - * / | 15 = no dia 15 |
| Mês | 1-12 | , - * / | 6 = em junho |
| Dia da Semana | 0-7 | , - * / | 0 = no domingo |
O minuto controla o minuto exato de execução: 30 * * * * é executado no minuto 30 de cada hora. A hora define o horário do dia: 0 6 * * * é executado diariamente às 6:00. O dia do mês restringe a datas específicas do calendário: 0 0 15 * * é executado no dia 15 de todo mês à meia-noite. O mês limita a execução a meses específicos: 0 0 1 6 * é executado em 1º de junho. O dia da semana controla quais dias úteis: 0 8 * * 1-5 é executado às 8h de segunda a sexta-feira.
Importante: os dias 29-31 só são executados em meses que possuem essas datas. Em meses mais curtos, esses valores são silenciosamente ignorados.
Caracteres Especiais
| Caractere | Nome | Finalidade | Exemplo |
|-----------|------|------------|---------|
| * | Asterisco | Todos os valores possíveis | * no minuto = a cada minuto |
| , | Vírgula | Lista de valores | 1,15,30 = minutos 1, 15, 30 |
| - | Hífen | Intervalo | 9-17 = horas 9 a 17 |
| / | Barra | Valores de passo | */5 = a cada 5 minutos |
Valores de Passo com Barra
A barra expressa "a cada N unidades":
# Every 5 minutes
*/5 * * * *
# Every 2 hours
0 */2 * * *
# Every 15 minutes during business hours
*/15 9-17 * * *
Padrões Comuns de Agendamento Cron
| Agendamento | Expressão | Descrição |
|-------------|-----------|-----------|
| A cada minuto | * * * * * | Executa 1.440 vezes por dia |
| A cada 5 minutos | */5 * * * * | Verificações de integridade, monitoramento |
| A cada hora | 0 * * * * | No início de cada hora |
| Duas vezes por dia | 0 6,18 * * * | 6h e 18h |
| Diariamente à meia-noite | 0 0 * * * | Manutenção clássica |
| Semanalmente aos domingos | 0 0 * * 0 | Manutenção semanal |
| Dia 1 do mês | 0 0 1 * * | Relatórios mensais |
| Dias úteis às 9h | 0 9 * * 1-5 | Início do expediente |
Atalhos Não Padrão
Algumas implementações de cron suportam atalhos nomeados: @yearly (1º de janeiro), @monthly (dia 1 do mês), @weekly (domingo), @daily (meia-noite), @hourly e @reboot (executa uma vez na inicialização do sistema). Suportados pelo Vixie cron, cronie e timers do systemd.
Erros Comuns
- Definir tanto o dia do mês quanto o dia da semana cria uma condição OU — o trabalho é executado quando um dos dois corresponde, o que raramente é a intenção.
- O cron usa o fuso horário do sistema. Trabalhos próximos às transições de horário de verão podem ser executados duas vezes ou nenhuma.
- Conte sempre cinco campos. Quatro campos é inválido; seis campos exige sintaxe cron estendida.
Teste Suas Expressões Cron
Use o validador de expressões cron para verificar a sintaxe, pré-visualizar os próximos horários de execução e detectar erros antes que afetem a produção. Uma verificação de validação de trinta segundos evita falhas silenciosas de agendamento.