ToolkitVault Logo

Descodificador de Expressões Cron

Cola qualquer expressão cron para converter para texto legível e ver as próximas execuções.

Descodificar Expressão Cron

[ Publicidade • Os Nossos Parceiros ]

Cron & Cron Expressions: Guia do utilizador e conteúdo de apoio

TL;DR (Respostas rápidas sobre cron)

  • Cron expression (Unix): minute hour day-of-month month day-of-week5 campos.
  • Variantes Quartz/Spring: normalmente 6 ou 7 campos (adicionam seconds, às vezes year) e o wildcard especial **? ** para no specific value em DOM/DOW.
  • Kubernetes CronJob: spec.schedule usa o formato cron standard; clusters recentes suportam spec.timeZone para schedules baseados na hora local.
  • Boa prática: Testa e monitoriza sempre os teus cron jobs; regista as saídas e define alertas para falhas.

O que é o Cron?

Cron é um scheduler de tarefas baseado no tempo em sistemas tipo Unix. Executa comandos a intervalos definidos usando cron expressions. Cada linha no teu crontab declara quando e o quê executar.

Onde corre o cron:

  • System crontab: /etc/crontab (tem um campo de utilizador)
  • User crontab: crontab -e por utilizador

Strings predefinidas como @hourly, @daily, @weekly, @monthly, @reboot são atalhos que podes usar em vez de escrever expressões completas.


Sintaxe de cron expressions (Unix / estilo POSIX)

Formato (5 campos):

┌───────────── minute (0–59)
│ ┌─────────── hour (0–23)
│ │ ┌───────── day of month (1–31)
│ │ │ ┌─────── month (1–12 or JAN–DEC)
│ │ │ │ ┌───── day of week (0–6 or SUN–SAT; 0 or 7 = Sunday on many systems)
│ │ │ │ │
│ │ │ │ │
* * * * *

Wildcards & operadores

  • * any value
  • , list → 1,2,5
  • - range → 1-5
  • / step → */10
  • L, W, # são extensões não standard (comuns em Quartz, não no cron Unix clássico).

Exemplos

  • A cada 15 minutos: */15 * * * *
  • Diário às 02:00: 0 2 * * *
  • Dias úteis às 18:30: 30 18 * * 1-5
  • Primeiro dia do mês às 07:00: 0 7 1 * *

Dica de portabilidade: Evita depender de modificadores não standard a menos que o teu scheduler os documente. O cron Unix clássico não aceita ?, L, W ou #.


Quartz Cron / Spring Cron vs Unix Cron (diferenças a ter em conta)

Muitos schedulers de aplicação (ex.: Quartz, Spring) usam uma sintaxe estendida:

  • Campos: seconds minutes hours day-of-month month day-of-week [year]6 ou 7 campos
  • Especial ?: usado em day-of-month ou day-of-week para significar no specific value
  • Modificadores estendidos como L (last), W (weekday), # (nth weekday) são frequentemente suportados.

Mapeamento rápido

  • Unix: 0 2 * * * → diário às 02:00
  • Quartz/Spring (com seconds): 0 0 2 * * ? → diário às 02:00 (sem DOW específico)

Armadilhas comuns

  • Colar uma expressão de 5 campos de Unix em Spring/Quartz não vai funcionar. Adiciona seconds (e às vezes year) ou usa um helper para converter.
  • ? é inválido em Unix cron mas é necessário em alguns cenários de Quartz.

Kubernetes CronJobs (k8s)

  • Define schedules via spec.schedule (formato cron standard).
  • Versões recentes de Kubernetes suportam spec.timeZone, permitindo fixar um fuso horário IANA (por ex., "Europe/Zurich"). Sem isso, os schedules são avaliados no fuso do controller (muitas vezes UTC).

Exemplo

apiVersion: batch/v1
kind: CronJob
metadata:
  name: db-backup
spec:
  schedule: '0 2 * * *' # 02:00 diário
  timeZone: 'Europe/Zurich' # garante schedule em hora local (suportado em clusters modernos)
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: backup
              image: alpine:3.20
              command: [ 'sh', '-lc', 'pg_dump $DB_URL > /backups/$(date +%F).sql' ]

Gerador / Decoder de cron expressions (inline)

Usa a referência rápida abaixo para construir ou decodificar schedules. Copia/cola no teu crontab ou num CronJob de k8s.

Padrões rápidos

Linguagem naturalUnix cronQuartz/Spring
A cada minuto* * * * *0 * * * * ?
A cada 5 minutos*/5 * * * *0 */5 * * * ?
De hora a hora às :3030 * * * *0 30 * * * ?
Diário 02:000 2 * * *0 0 2 * * ?
Dias úteis 18:3030 18 * * 1-50 30 18 ? * MON-FRI
1.º dia do mês 07:000 7 1 * *0 0 7 1 * ?
Domingos 00:000 0 * * 00 0 0 ? * SUN
Último dia do mês 23:00(não standard em Unix)0 0 23 L * ?

Dicas de decode

  • Qualquer */N → executa a cada N unidades desse campo.
  • DOM e DOW ambos definidos → o comportamento varia por implementação; fica-te por um (ou usa ? em Quartz).

Noções básicas de crontab

  • Editar: crontab -e
  • Listar: crontab -l
  • Ambiente: define PATH, SHELL, MAILTO e variáveis explicitamente—cron corre com um ambiente mínimo.
  • Saída: encaminha com >> /var/log/myjob.log 2>&1 ou usa o mail do sistema.

Checklist de debugging de cron

  1. O comando é executável como o mesmo utilizador?
  2. Estás a usar caminhos absolutos para binários e ficheiros?
  3. O ambiente (PATH, LANG, TZ) está definido?
  4. A expressão é válida para a “flavour” do teu scheduler?
  5. As falhas estão a ser monitorizadas/com alertas?

Monitoring & fiabilidade

  • Encaminha saídas para logs e alerta quando os exit codes forem ≠ 0.
  • Considera monitores dedicados (health pings, heartbeats) que alertam quando execuções falham ou faltam.
  • Em Kubernetes, observa os estados dos Job, ajusta backoffLimit e mantém algum histórico.

Cron FAQs


Cron Checklist

  1. Identifica a “flavour” do scheduler (Unix, systemd timer, Quartz/Spring, k8s).
  2. Normaliza as expressões para essa “flavour” (5 vs 6/7 campos, símbolos especiais).
  3. Define explicitamente o fuso horário e o comportamento em DST.
  4. Adiciona monitoring (heartbeat + alertas de falha).
  5. Documenta responsabilidade, runbooks e caminhos de escalada.

[ Publicidade • Os Nossos Parceiros ]

© 2025 ToolkitVault — Utilitários Grátis para Devs