A Expressão */5 * * * *
A expressão cron */5 * * * * agenda um trabalho para executar a cada 5 minutos, toda hora, todos os dias. Os cinco campos mapeiam para: minuto, hora, dia do mês, mês, dia da semana. Um * em um campo significa “cada valor válido.” O */5 no campo de minuto usa o operador de passó para selecionar cada 5º valor.
O Operador de Passó
O caractere / no cron é chamado de operador de passo. A sintaxe */N significa “a cada N unidades através do intervalo completo.” Para o campo de minuto:
- Intervalo completo: 0 a 59
- Passo: 5
- Resultado: 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55
Você também pode usar um passó em um intervalo restrito. 10-30/5 expande para 10,15,20,25,30, disparando a cada 5 minutos, mas apenas dentro da janela de 10 a 30. Issó é menos comumente necessário mas válido em todas as principais implementações cron.
O Que Issó Expande
*/5 * * * *
É exatamente equivalente a:
0,5,10,15,20,25,30,35,40,45,50,55 * * * *
Ambas as formas disparam 12 vezes por hora, 288 vezes por dia. Se você colocar qualquer uma em crontab -e em um sistema Linux, obtém o mêsmo comportamento. A forma de passó é preferida na prática porque é mais legível e menos propensa a erros de digitação.
Quando um Agendamento de 5 Minutos Faz Sentido
Health checks e monitoramento de uptime
Pingar um endpoint a cada 5 minutos detecta falhas dentro de uma janela de 5 minutos. Intervalos mais curtos (1 a 2 minutos) são melhores para serviços críticos, mas 5 minutos é um padrão razoável para ferramentas internas não críticas.
Aquecimento e atualização de cache
Se sua aplicação armazena dados em cache que expiram após 10 a 30 minutos, um cron de 5 minutos que pré-carrega e popula o cache evita que falhas de cache atinjam serviços downstream.
Polling de APIs externas
Quando um webhook não está disponível e você precisa puxar dados de uma fonte externa, 5 minutos é frequentemente o intervalo mais curto que permanece dentro dos limites de taxa. Sempre verifique a documentação de limite de taxa da API antes de definir o intervalo.
Rotação de log ou agregação de métricas
Algumas tarefas leves de agregação (acumular contadores, liberar dados em buffer) executam em intervalos curtos onde uma janela de 5 minutos é um tamanho de bucket natural.
Não é adequado para: qualquer coisa que precise de precisão abaixo de 1 minuto. A resolução do cron é de 1 minuto. Para trabalhos abaixo de 1 minuto, use um processó de longa duração com um loop de sleep interno, um timer systemd com OnCalendar=*:0/1, ou um agendador de trabalhos como Celery Beat.
Alternativas e Comparação
| Expressão | Disparos por hora | Usó típico |
|---|---|---|
*/1 * * * * | 60 | Polling quase em tempo real |
*/5 * * * * | 12 | Health checks, refresh de cache |
*/10 * * * * | 6 | Polling moderado |
*/15 * * * * | 4 | Relatórios de quarto de hora |
*/30 * * * * | 2 | Resumos de meia hora |
0 * * * * | 1 | Trabalhos horários |
Cron vs Timers systemd
Em sistemas Linux modernos com systemd, você pode usar OnCalendar em uma unidade .timer em vez de cron:
[Timer]
OnCalendar=*:0/5
Persistent=true
Verificando seu Agendamento
from croniter import croniter
from datetime import datetime
cron = croniter("*/5 * * * *", datetime.now())
for _ in range(5):
print(cron.get_next(datetime))