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
| Caractere | Significado | Exemplo |
|---|---|---|
* | — a cada minuto | * * * * * — às 9h e às 17h |
, | Lista de valores | 0 9,17 * * * — a cada hora entre 9h e 17h |
- | Faixa | 0 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 semana | 0 0 15 * ? Último (apenas Quartz/AWS) |
L | — no último dia de cada mês | 0 0 L * ? Dia mais próximo (apenas Quartz/AWS) |
W | — o dia mais próximo ao dia 15 | 0 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ção | Expressão Cron | Notas |
|---|---|---|
| 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 hora | 0 * * * * | A cada 6 horas |
| Sincronização de dados, exportações incrementais | 0 */6 * * * | Diariamente às 00h UTC |
| Gatilho diário padrão | 0 0 * * * | Diariamente às 9h UTC |
| Geração de relatórios matinais | 0 9 * * * | Dias úteis às 9h UTC |
| Tarefas apenas nos dias úteis (de segunda a sexta) | 0 9 * * 1-5 | Dias úteis às 8h30 UTC |
| Entrega de relatório pré-estabelecido | 30 8 * * 1-5 | A cada domingo às 2h |
| Manutenção semanal, cópias de segurança fora do pico | 0 2 * * 0 | Primeiro dia de cada mês |
| Execuções mensais de faturamento, relatórios recorrentes | 0 0 1 * * | 1º de janeiro às 00h |
| Reinicializações anuais, tarefas de início do ano | 0 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 Melhor | Ló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 Scheduler | Gatilhos de pipeline CI/CD |
| Agendamentos no GitHub Actions | Orquestração observável de tarefas |
| Airflow, Prefect, Temporal | Para 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
Instale nossas extensões
Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida
恵 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!
Ferramentas essenciais
Ver tudo Novas chegadas
Ver tudoAtualizar: Nosso ferramenta mais recente foi adicionado em 25 abr 2026
