Anúncios incomodam? Ir Sem anúncios Hoje

Expressões Cron Referência Prática com Exemplos Reais

Publicado em
Expressões de Cron: Uma Referência Prática com Exemplos Reais 1
ANUNCIADO Remover?

Uma expressão cron é composta por cinco campos separados por espaços, que indicam a um agendador Unix quando executar um comando. Cinco campos, alguns caracteres especiais e alguns padrões comuns — isso é o modelo mental completo. Esta referência aborda a sintaxe, os caracteres que causam confusão e os agendamentos que os desenvolvedores realmente utilizam.

Os Cinco Campos

O cron padrão utiliza cinco campos posicionais:

* * * * *
│ │ │ │ └─ Day of week   (0–7, Sunday = 0 or 7)
│ │ │ └─── Month         (1–12)
│ │ └───── Day of month  (1–31)
│ └─────── Hour          (0–23)
└───────── Minute        (0–59)

AWS EventBridge e o agendador Quartz do Java adicionam um campo no início, tornando o total de seis campos. Todos os demais campos deslocam-se para a direita. Isso confunde desenvolvedores que passam entre ambientes — uma expressão Quartz colada em um crontab padrão será executada no horário errado sem qualquer aviso. segundos Use apenas o cron padrão de cinco campos, a menos que a plataforma exija explicitamente seis.

Caracteres Especiais

Qualquer valor — corresponde a todas as unidades

CaractereSignificadoExemplo
*— a cada minuto* * * * * — às 9h e às 17h
,Lista de valores0 9,17 * * * — a cada hora entre 9h e 17h
-Faixa0 9-17 * * * Intervalo de passo
/— a cada 15 minutos*/15 * * * * Sem valor específico (apenas Quartz/AWS)
?— no dia 15 de cada mês, qualquer dia da semana0 0 15 * ? Último (apenas Quartz/AWS)
L— no último dia de cada mês0 0 L * ? Dia mais próximo (apenas Quartz/AWS)
W— o dia mais próximo ao dia 150 0 15W * ? Padrão

reconhece apenas crontab . Se você ver *, ,, -e, e /em uma expressão, foi escrita para Quartz ou AWS EventBridge — não copie diretamente para um crontab do Linux. ?, L, ou W A Tabela de Referência: Agendamentos que os Desenvolvedores Utilizam de Fato

Esta é a parte que vale a pena salvar. Crie e valide qualquer uma dessas expressões com o

Gerador de Expressão Cron IO Tools Raramente apropriado em produção.

DescriçãoExpressão CronNotas
A cada minuto* * * * *Verificações de saúde, ciclos de polling curtos
A cada 5 minutos*/5 * * * *Aquecimento de cache, sincronização de feed
A cada 15 minutos*/15 * * * *A cada 30 minutos
Equivalente a*/30 * * * *A cada hora (no horário exato) 0,30 * * * *
Executa às 00 de cada hora0 * * * *A cada 6 horas
Sincronização de dados, exportações incrementais0 */6 * * *Diariamente às 00h UTC
Gatilho diário padrão0 0 * * *Diariamente às 9h UTC
Geração de relatórios matinais0 9 * * *Dias úteis às 9h UTC
Tarefas apenas nos dias úteis (de segunda a sexta)0 9 * * 1-5Dias úteis às 8h30 UTC
Entrega de relatório pré-estabelecido30 8 * * 1-5A cada domingo às 2h
Manutenção semanal, cópias de segurança fora do pico0 2 * * 0Primeiro dia de cada mês
Execuções mensais de faturamento, relatórios recorrentes0 0 1 * *1º de janeiro às 00h
Reinicializações anuais, tarefas de início do ano0 0 1 1 *O Problema do Fuso Horário

O cron não tem consciência de fuso horário. Ele executa no fuso horário configurado no servidor — na maioria dos sistemas Linux, isso é UTC. Isso geralmente é aceitável até que você tenha tarefas ligadas às horas comerciais ou usuários em diferentes regiões que se perguntam por que o "relatório às 9h" chega às 14h.

As configurações mais seguras:

Configure seu servidor para UTC. Converta para o horário local no código da aplicação, e não no agendamento do cron.

  • Comente cada tarefa cron com o horário local efetivo, para que a próxima pessoa que ler o crontab não precise adivinhar.
  • Quando se usa agendadores na nuvem (AWS EventBridge, Google Cloud Scheduler), verifique o campo de fuso horário — a maioria suporta nomes de fuso horário IANA diretamente, o que elimina a ambiguidade.
  • Teste: Calcule os Próximos Execuções Antes de Deploys
# Always comment with the effective local time
# Runs daily at midnight UTC (= 8pm EST / 5pm PST)
0 0 * * * /usr/bin/python3 /opt/scripts/daily_report.py

Deploys de uma tarefa cron para descobrir que ela executa a cada minuto em vez de a cada hora é uma passagem obrigatória. Pule isso.

Calculador de Próximos Execuções Cron IO Tools

O Mostra exatamente quando sua expressão será executada — cole sua expressão e obtenha os próximos dez horários antes de tocar um servidor. Para validação no terminal:

Adicionando uma Tarefa Cron no Linux

# Install croniter (Python) for quick expression testing
pip install croniter

python3 -c "
from croniter import croniter
from datetime import datetime

cron = croniter('*/15 * * * *', datetime.utcnow())
for _ in range(5):
    print(cron.get_next(datetime))
"

No final da linha de backup, redireciona stderr para stdout, para que ambos sejam gravados no arquivo de log. Sem isso, erros do cron vão para o spool de e-mail — e ninguém os verifica.

# Open the crontab editor for the current user
crontab -e

# Format: minute hour day month weekday command
# Run backup script daily at 2:30am UTC
30 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

# Run a Python script every 5 minutes
*/5 * * * * /usr/bin/python3 /home/user/scripts/sync.py

# View current crontab entries
crontab -l

# Edit another user's crontab (requires root)
crontab -u www-data -e

O 2>&1 Fluxo de Trabalho Agendado no GitHub Actions

O GitHub Actions utiliza a mesma sintaxe de cinco campos do cron, sempre em UTC. Não há sobrescrita de fuso horário.

Uma advertência: os fluxos de trabalho agendados no GitHub Actions podem ser atrasados em até 15 minutos durante períodos de alta carga. Não confie neles para tarefas que exigem precisão de tempo.

name: Nightly Data Export

on:
  schedule:
    # Runs at 1:00 AM UTC every weekday
    - cron: "0 1 * * 1-5"
  workflow_dispatch: # Allow manual trigger

jobs:
  export:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run export script
        run: python scripts/export.py

Quando o Cron Não É Suficiente

O cron padrão atende à maioria dos casos em um único servidor. Seus limites se tornam problemas em escala:

Sem retenção em caso de falha.

  • Se a tarefa falhar, a próxima execução será o horário seguinte agendado — não há retenção automática. Sem bloqueio distribuído.
  • Vários servidores executando o mesmo crontab irão disparar a mesma tarefa simultaneamente. Sem observabilidade.
  • Não há painel integrado para histórico de execuções, alertas de falha ou rastreamento de duração. Problema
Alternativa MelhorLógica de retenção e filas de tarefas
Celery Beat (Python), Sidekiq-Cron (Ruby)Agendamento nativo na nuvem com retenção
AWS EventBridge + Lambda, Google Cloud SchedulerGatilhos de pipeline CI/CD
Agendamentos no GitHub ActionsOrquestração observável de tarefas
Airflow, Prefect, TemporalPara scripts em um único servidor, o cron ainda é a ferramenta certa — é simples, confiável e tem zero dependências. Para qualquer coisa que precise de garantias de retenção, execução distribuída ou visibilidade de falhas, uma fila dedicada de tarefas se justifica rapidamente.

para construir seu próximo agendamento sem precisar memorizar a sintaxe, e o

Use o Gerador de expressão Cron Calculador de Próximos Execuções Cron para verificar se ele dispara quando você espera. Expressões Cron: Referência Prática com Exemplos Reais 2

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?