Cron Syntax Cheat Sheet: Referência Completa
O Cron é um agendador de tarefas baseado no tempo em sistemas operativos do tipo Unix. Quer seja um programador a configurar uma tarefa em segundo plano ou um engenheiro DevOps a gerir a manutenção do servidor, compreender a Sintaxe de Expressões Cron é essencial.
Este guia fornece uma análise completa dos campos do cron, caracteres especiais e exemplos práticos para o ajudar a agendar tarefas com confiança.
1. Formato da Expressão Cron
Uma expressão cron padrão consiste em cinco campos (ou seis em alguns sistemas como Quartz ou Jenkins).
┌───────────── minuto (0 - 59)
│ ┌───────────── hora (0 - 23)
│ │ ┌───────────── dia do mês (1 - 31)
│ │ │ ┌───────────── mês (1 - 12)
│ │ │ │ ┌───────────── dia da semana (0 - 6) (Domingo a Sábado)
│ │ │ │ │
* * * * *
2. Referência de Caracteres Especiais
| Carácter | Descrição | Exemplo |
|---|---|---|
* |
Qualquer valor: Corresponde a cada valor possível para esse campo. | * * * * * (A cada minuto) |
, |
Separador de lista: Especifica uma lista de valores. | 0,15,30,45 (A cada 15 minutos) |
- |
Intervalo de valores: Especifica um intervalo de X a Y. | 9-17 (Das 9h às 17h) |
/ |
Valores de passo: Especifica incrementos. | */15 (A cada 15 minutos) |
L |
Último (Last): Especifica o último dia do mês ou da semana. | 5L (Último sexta-feira do mês) |
W |
Dia útil (Weekday): O dia útil mais próximo (Seg-Sex) de uma data. | 15W (Dia útil mais próximo do dia 15) |
# |
N-ésimo dia do mês: Especifica a n-ésima ocorrência de um dia da semana. | 6#3 (Terceiro sábado do mês) |
3. Exemplos Comuns de Cron
| Agendamento | Expressão | Descrição |
|---|---|---|
| A cada minuto | * * * * * |
Executa a tarefa a cada minuto. |
| A cada hora | 0 * * * * |
Executa no início de cada hora. |
| Diariamente à meia-noite | 0 0 * * * |
Executa uma vez por dia às 00:00. |
| Domingos às 4h | 0 4 * * 0 |
Ótimo para cópias de segurança semanais. |
| A cada 15 minutos | */15 * * * * |
Executa em :00, :15, :30 e :45. |
| Horário de expediente (9h-17h) | 0 9-17 * * 1-5 |
Executa de hora a hora nos dias úteis. |
4. crontab -e vs crontab -l
O comando crontab é utilizado para gerir as suas tarefas cron pessoais.
crontab -e: Abre o seu ficheiro crontab pessoal para edição. Se for a primeira vez, ser-lhe-á pedido que escolha um editor (como o nano ou o vim).crontab -l: Lista todas as tarefas cron ativas para o utilizador atual.crontab -r: Remove todas as suas tarefas cron atuais. Use com precaução!
5. Visualizar o seu Agendamento
Ler uma expressão cron pura pode ser difícil. É por isso que criámos o Visualizador de Agendamento Cron.
A nossa ferramenta ajuda-o a:
- Analisar Expressões: Tradução instantânea de
0 4 * * 0para "Às 04:00 aos domingos". - Próximas Execuções: Veja as próximas 5 execuções agendadas com base no seu fuso horário.
- Descrições Legíveis: Acabaram-se as adivinhas sobre o que significa
*/5 9-17 * * 1-5.
FAQ: Resolução de Problemas de Tarefas Cron
Q: Porque é que a minha tarefa cron não está a ser executada?
A: A razão mais comum são as variáveis de ambiente. O Cron corre com um ambiente de shell mínimo. Use sempre caminhos absolutos para os comandos (ex: /usr/bin/python3 em vez de python3) e registe a sua saída num ficheiro: * * * * * /caminho/para/script.sh >> /var/log/cron.log 2>&1.
Q: Qual é a alternativa de systemd timer?
A: As distribuições modernas de Linux (como Ubuntu, Fedora) recomendam systemd timers em vez de cron. Oferecem um melhor registo via journalctl, dependências e agendamento mais flexível, embora a configuração seja mais complexa.
Q: Como lidar com problemas de fuso horário no cron?
A: Por defeito, o cron corre no fuso horário local do sistema (geralmente UTC em servidores). Alguns sistemas permitem definir CRON_TZ=Europe/Lisbon no topo do ficheiro crontab, mas a forma mais fiável é sincronizar o relógio do servidor com o fuso horário desejado.
Relacionado no Tool3M
- Analisador e Visualizador Cron: Valide e visualize as suas expressões cron instantaneamente.
- Formatador JSON: Formate ficheiros de configuração que possam conter strings cron.
- Conversor de Timestamp: Converta tempos de execução entre diferentes formatos e fusos horários.