A Expressão * * * * *
A expressão cron * * * * * dispara a cada marco de minuto: 00:00, 00:01, 00:02, e assim por diante, totalizando 60 vezes por hora, 1440 vezes por dia. Um * simples em qualquer campo cron significa “cada valor válido neste campo.” Com todos os cinco campos definidos como *, não há filtro: o trabalho executa em todos os limites de agendamento possíveis.
Esta é a frequência máxima que o cron suporta. O campo de minuto é a granularidade mais fina que o cron tem, então * * * * * é o máximo que o cron consegue.
Quando o Por Minuto Faz Sentido
Workers de fila com gatilho baseado em cron
Alguns sistemas usam cron para iniciar um worker que drena uma fila de trabalhos. Se os trabalhos chegam continuamente é a latência importa, um gatilho por minuto garante que a fila não fique ociosa por muito tempo.
Monitoramento em tempo real sem agente dedicado
Se você não pode instalar um agente de monitoramento persistente, um cron por minuto que verifica um endpoint de saúde ou registra uma métrica é um fallback pragmático.
Sinais de heartbeat leves
Escrever um timêstamp em um arquivo ou banco de dados a cada minuto é uma verificação de atividade comum.
Quando é Exagero
Trabalhos com custo de inicialização significativo
Se seu trabalho conecta a um banco de dados, carrega configuração de uma fonte remota ou autentica contra uma API externa, ele paga esse custo 1440 vezes ao dia. Um daemon de longa duração paga uma vez.
Trabalhos que às vezes levam mais de 60 segundos
O cron padrão não sabe se a execução anterior ainda está rodando. Se o trabalho leva 90 segundos, você terá duas instâncias executando simultaneamente no minuto 2.
Prevenindo Execução Concorrente
Para qualquer trabalho cron por minuto, teste o que acontece quando o tempo de execução excede 60 segundos. A solução padrão é flock:
* * * * * flock -n /tmp/myjob.lock /path/to/myjob.sh
Alternativas Abaixo de 1 Minuto
Timer systemd com loop de sleep
Crie uma unidade .service que faz loop internamente é uma unidade .timer que a inicia na inicialização.
Entrada dupla baseada em sleep (solução de 30 segundos)
* * * * * /path/to/job
* * * * * sleep 30 && /path/to/job
Celery Beat / APScheduler
Agendadores em nível de aplicação executam dentro do seu processó e suportam intervalos arbitrários incluindo subsegundos.
Verificando a Execução
grep CRON /var/log/syslog | grep myjob | tail -5