Folha de ReferĂȘncia de ExpressĂ”es Cron â Agende Tarefas como um Profissional
O Cron Ă© a espinha dorsal da automação de tarefas agendadas em sistemas Unix-like. Seja para rotacionar logs, executar backups de banco de dados ou acionar pipelines CI/CD, as expressĂ”es cron definem quando essas tarefas sĂŁo executadas. A sintaxe Ă© compacta mas poderosa â e fĂĄcil de errar se vocĂȘ estiver adivinhando.
Esta referĂȘncia cobre cada parte da sintaxe cron com exemplos prĂĄticos prontos para copiar e colar. Se vocĂȘ quer construir e validar expressĂ”es de forma interativa, abra o Construtor de ExpressĂ”es Cron junto com este guia.
Sintaxe Cron: Os cinco campos
Uma expressão cron padrão consiste em cinco campos separados por espaços:
ââââââââââââââ minuto (0â59)
â ââââââââââââââ hora (0â23)
â â ââââââââââââââ dia do mĂȘs (1â31)
â â â ââââââââââââââ mĂȘs (1â12)
â â â â ââââââââââââââ dia da semana (0â7, onde 0 e 7 = Domingo)
â â â â â
* * * * *
Cada campo aceita um valor especĂfico, um intervalo, uma lista ou um curinga. Juntos, os cinco campos especificam um agendamento recorrente exato.
| Campo | Valores permitidos | Caracteres especiais |
|---|---|---|
| Minuto | 0â59 | * , - / |
| Hora | 0â23 | * , - / |
| Dia do mĂȘs | 1â31 | * , - / |
| MĂȘs | 1â12 | * , - / |
| Dia da semana | 0â7 | * , - / |
Os campos de mĂȘs e dia da semana tambĂ©m aceitam abreviaçÔes de trĂȘs letras (JANâDEC, SUNâSAT) na maioria das implementaçÔes.
Caracteres especiais explicados
Compreender quatro caracteres especiais desbloqueia todo o poder do cron:
Asterisco * â "Cada"
Corresponde a todos os valores possĂveis para aquele campo.
* * * * * # Cada minuto de cada hora de cada dia
VĂrgula , â "E"
Especifica uma lista de valores discretos.
0 9,12,18 * * * # Ăs 9:00, 12:00 e 18:00 diariamente
HĂfen - â "AtĂ©"
Define um intervalo inclusivo.
0 9-17 * * * # Cada hora das 9h Ă s 17h
Barra / â "A cada n-Ă©simo"
Define um intervalo de passo a partir do inĂcio do intervalo.
*/10 * * * * # A cada 10 minutos (0, 10, 20, 30, 40, 50)
VocĂȘ pode combinar um intervalo com um passo:
0 9-17/2 * * * # A cada 2 horas das 9h Ă s 17h (9, 11, 13, 15, 17)
Exemplos comuns de agendamento Cron
Salve esta tabela nos favoritos. Estes sĂŁo os agendamentos que vocĂȘ usarĂĄ repetidamente.
| Agendamento | Expressão | Explicação |
|---|---|---|
| Cada minuto | * * * * * | Executa no inĂcio de cada minuto |
| A cada 5 minutos | */5 * * * * | Minutos 0, 5, 10, 15, âŠ, 55 |
| A cada 15 minutos | */15 * * * * | Minutos 0, 15, 30, 45 |
| Cada hora | 0 * * * * | No minuto 0 de cada hora |
| A cada 6 horas | 0 */6 * * * | Ăs 00:00, 06:00, 12:00, 18:00 |
| Diariamente Ă meia-noite | 0 0 * * * | Uma vez por dia Ă s 00:00 |
| Diariamente Ă s 3h | 0 3 * * * | Uma vez por dia Ă s 03:00 |
| Toda segunda Ă s 9h | 0 9 * * 1 | Semanalmente na segunda Ă s 09:00 |
| Dias Ășteis Ă s 8h | 0 8 * * 1-5 | Segunda a sexta Ă s 08:00 |
| Fins de semana ao meio-dia | 0 12 * * 0,6 | SĂĄbado e domingo Ă s 12:00 |
| Primeiro de cada mĂȘs | 0 0 1 * * | Meia-noite do dia 1 de cada mĂȘs |
| A cada trimestre (Jan, Abr, Jul, Out) | 0 0 1 1,4,7,10 * | Meia-noite do 1Âș dos meses trimestrais |
| A cada 15 min em horĂĄrio comercial | */15 9-17 * * 1-5 | Dias Ășteis, 9hâ17h, a cada 15 minutos |
Cole qualquer expressão no Construtor de ExpressÔes Cron para visualizar os próximos horårios de execução.
PadrÔes avançados
Combinando listas e intervalos
Os campos aceitam sintaxe mista. Para executar uma tarefa Ă s 8h e 18h em dias Ășteis:
0 8,18 * * 1-5
Para direcionar meses especĂficos com um passo:
0 0 1 1-12/3 * # A cada 3 meses começando em janeiro (Jan, Abr, Jul, Out)
Dia do mĂȘs vs. Dia da semana
Quando tanto o dia do mĂȘs quanto o dia da semana estĂŁo definidos (nĂŁo *), o comportamento depende da implementação. No cron padrĂŁo, a tarefa executa se qualquer uma das condiçÔes for atendida â Ă© uma relação OU, nĂŁo E. Isso surpreende muitas pessoas.
0 0 15 * 1 # Executa no dia 15 E toda segunda â nĂŁo "segunda-feira dia 15"
Execução na inicialização
Embora nĂŁo seja uma expressĂŁo cron propriamente, @reboot Ă© um atalho amplamente suportado:
@reboot /usr/local/bin/start-service.sh
Outros atalhos comuns:
| Atalho | Equivalente |
|---|---|
@yearly | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily | 0 0 * * * |
@hourly | 0 * * * * |
Cron em diferentes ambientes
A sintaxe de cinco campos Ă© universal, mas como vocĂȘ configura o cron varia por plataforma.
Crontab Linux
O clĂĄssico. Edite seu crontab de usuĂĄrio com crontab -e:
# Executar backup todo dia Ă s 2h
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1
Tarefas cron do sistema em /etc/cron.d/ incluem um campo de usuĂĄrio extra:
0 2 * * * root /usr/local/bin/cleanup.sh
GitHub Actions
O GitHub Actions usa a mesma sintaxe de cinco campos dentro de um gatilho schedule. Todos os horĂĄrios sĂŁo UTC.
on:
schedule:
- cron: '0 3 * * 1-5' # Dias Ășteis Ă s 3h UTC
Para um aprofundamento na configuração YAML, veja YAML para Kubernetes e YAML para Docker Compose.
Kubernetes CronJob
O Kubernetes encapsula expressÔes cron em um recurso CronJob:
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: report
image: reporting:latest
command: ["python", "generate_report.py"]
restartPolicy: OnFailure
O Kubernetes usa UTC por padrĂŁo. A partir da v1.25, vocĂȘ pode definir timeZone: "America/Sao_Paulo" na especificação do CronJob.
AWS CloudWatch (EventBridge)
A AWS usa uma sintaxe ligeiramente diferente com seis campos (adicionando segundos) e os wrappers rate() / cron():
cron(0 3 * * ? *) # Diariamente Ă s 3h UTC
Note o caractere ? â a AWS exige isso para o dia do mĂȘs ou dia da semana quando o outro estĂĄ especificado. Isso Ă© diferente do cron padrĂŁo.
Armadilhas comuns
1. ConfusĂŁo de fuso horĂĄrio
O Cron usa o fuso horĂĄrio do sistema no Linux, mas o Kubernetes e o GitHub Actions executam em UTC. Uma tarefa agendada para 0 9 * * * serĂĄ disparada Ă s 9h UTC, que Ă© 6h no horĂĄrio de BrasĂlia.
Sempre verifique qual fuso horårio seu agendador usa. Para conversÔes de timestamp, nosso guia Timestamp Unix Explicado cobre os offsets UTC em detalhes.
2. ExecuçÔes sobrepostas
Se uma tarefa demora mais que o intervalo entre execuçÔes, vocĂȘ terĂĄ instĂąncias sobrepostas. Um script que leva 8 minutos em um agendamento */5 * * * * vai acumular.
SoluçÔes:
- Use um arquivo de lock (
flockno Linux) - Defina
concurrencyPolicy: Forbidnos CronJobs do Kubernetes - Verifique instĂąncias em execução no inĂcio do seu script
3. SaĂda ausente e depuração
O Cron nĂŁo captura stdout por padrĂŁo. Sempre redirecione a saĂda:
*/5 * * * * /path/to/script.sh >> /var/log/myjob.log 2>&1
Se uma tarefa cron nĂŁo estĂĄ executando, verifique:
grep CRON /var/log/syslogpara logs de execução- PermissÔes do arquivo do script
- A variĂĄvel de ambiente
PATHâ o cron tem umPATHmĂnimo por padrĂŁo
4. A armadilha do "dia 31 de cada mĂȘs"
0 0 31 * * # SĂł executa em meses com 31 dias
Isso executa em janeiro, março, maio, julho, agosto, outubro e dezembro â mas pula silenciosamente os outros cinco meses. Se vocĂȘ precisa de uma tarefa de fim de mĂȘs, considere executar no dia 1 e ajustar a lĂłgica do seu script, ou use uma ferramenta que suporte semĂąnticas de "Ășltimo dia do mĂȘs".
5. Esquecer a quebra de linha no final do crontab
Algumas implementaçÔes de cron requerem uma quebra de linha final no arquivo crontab. Se sua Ășltima entrada nĂŁo executa, adicione uma linha vazia no final.
Construindo expressÔes visualmente
Memorizar a sintaxe funciona para padrÔes comuns, mas agendamentos complexos são mais fåceis de construir visualmente. O Construtor de ExpressÔes Cron no alltools.one permite:
- Selecionar valores para cada campo usando menus suspensos
- Ver uma descrição legĂvel do agendamento
- Visualizar os próximos horårios de execução
- Copiar a expressĂŁo final com um clique
Funciona inteiramente no seu navegador â nenhum dado Ă© enviado a qualquer servidor.
CartĂŁo de referĂȘncia rĂĄpida
Copie este bloco para a documentação do seu projeto ou wiki da equipe:
# ââââââ min (0-59)
# â ââââââ hora (0-23)
# â â ââââââ dia do mĂȘs (1-31)
# â â â ââââââ mĂȘs (1-12)
# â â â â ââââââ dia da semana (0-7, Dom=0 ou 7)
# â â â â â
# * * * * *
*/5 * * * * # A cada 5 minutos
0 * * * * # Cada hora
0 0 * * * # Diariamente Ă meia-noite
0 9 * * 1-5 # Dias Ășteis Ă s 9h
0 0 1 * * # Primeiro do mĂȘs
*/15 9-17 * * 1-5 # A cada 15 min, horĂĄrio comercial
Leitura adicional
- Timestamp Unix Explicado â Entenda o tempo epoch e conversĂ”es de fuso horĂĄrio
- YAML para Kubernetes â Configure CronJobs e outros recursos Kubernetes
- YAML para Docker Compose â Agende contĂȘineres em configuraçÔes compose
Pronto para construir sua próxima expressão cron? Abra o Construtor de ExpressÔes Cron e acerte seu agendamento de primeira.