⏱️
← Voltar aos guias

Sintaxe de Expressão Cron: Um Guia Completo com Exemplos

· Tags: cron-syntax, crontab-format, cron-fields, cron-expression-guide, linux-automation

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.

Sintaxe de Expressão Cron: Um Guia Completo com Exemplos - CoolTool