cron linux devops cheat-sheet scheduling automation

Cron Syntax Cheat Sheet: Referência Completa e Visualizador

Um guia abrangente sobre a sintaxe de expressões cron, incluindo caracteres especiais, exemplos comuns e explicação do visualizador. Domine o agendamento crontab para Linux e Unix.

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:

  1. Analisar Expressões: Tradução instantânea de 0 4 * * 0 para "Às 04:00 aos domingos".
  2. Próximas Execuções: Veja as próximas 5 execuções agendadas com base no seu fuso horário.
  3. 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