raatools/

Gerador de expressões Cron

Construa e decodifique expressões cron de cinco campos visualmente.

Format: minute hour day-of-month month day-of-week

Use * for any value, 0-5 for ranges, 1,3,5 for lists, */5 for every N

Cron Expression
* * * * *
Description

every minute

O que é o cron?

O cron é o agendador de tarefas padrão nos sistemas operativos Unix e Linux. Executa comandos ou scripts em momentos e intervalos especificados, tornando-se essencial para a administração de sistemas, automação DevOps e agendamento de aplicações de backend. O nome vem da palavra grega chronos, que significa tempo.

Uma expressão cron é uma cadeia compacta de cinco campos que define quando uma tarefa deve ser executada. Cada campo especifica um componente de tempo — minuto, hora, dia do mês, mês e dia da semana. Em conjunto, estes cinco campos podem expressar agendamentos que vão desde "a cada minuto" até "uma vez por ano numa data específica".

Sintaxe do cron explicada

Cada um dos cinco campos aceita valores específicos e caracteres especiais. Um asterisco (*) significa "todos os valores possíveis". Um número define um valor específico. Um hífen (1-5) define um intervalo. Uma vírgula (1,3,5) cria uma lista. Uma barra (*/5) define um passo. A combinação destes operadores permite construir praticamente qualquer agendamento.

Referência de campos

  • Minuto (0–59): O minuto da hora em que a tarefa é executada.
  • Hora (0–23): A hora do dia no formato de 24 horas. 0 é meia-noite, 12 é meio-dia.
  • Dia do mês (1–31): O dia do calendário. Nem todos os meses têm 31 dias — o cron ignora automaticamente datas inválidas.
  • Mês (1–12): O mês do calendário. 1 é janeiro, 12 é dezembro.
  • Dia da semana (0–6): O dia da semana. 0 é domingo, 6 é sábado. Alguns sistemas também aceitam 7 para domingo.

Expressões cron comuns

  • 0 0 * * * — 0 0 * * * — Todos os dias à meia-noite.
  • 0 9 * * 1-5 — 0 9 * * 1-5 — Dias úteis às 9:00.
  • 0 0 1 * * — 0 0 1 * * — Primeiro dia de cada mês à meia-noite.
  • */15 * * * * — */15 * * * * — A cada 15 minutos.
  • 0 */4 * * * — 0 */4 * * * — A cada 4 horas, na hora certa.

Erros comuns no cron

O erro mais frequente é colocar os campos na ordem errada. O cron lê sempre o minuto primeiro, depois a hora — por isso "0 9" significa 9:00, não o minuto 9. Outro problema é esquecer que o fuso horário do servidor determina quando o cron é executado. Se o servidor estiver em UTC mas esperar hora local, as tarefas serão executadas na hora errada.

Evite agendar tarefas intensivas exatamente à meia-noite (0 0 * * *) porque muitas outras tarefas cron são executadas ao mesmo tempo. Distribua as suas tarefas por alguns minutos para evitar picos de carga. Tenha também cuidado com tarefas que demoram mais a concluir do que o intervalo — se uma tarefa é executada a cada minuto mas demora 3 minutos, haverá instâncias sobrepostas.

Melhores práticas

Redirecione sempre o output do cron para um ficheiro de log (>> /var/log/myjob.log 2>&1) para poder resolver problemas. Use caminhos absolutos para comandos e scripts porque o cron é executado com um ambiente PATH mínimo. Teste a sua expressão com uma ferramenta como esta antes de implementar em produção.

Para necessidades de agendamento complexas, considere alternativas ao cron como os temporizadores systemd (Linux), o Celery Beat (Python) ou agendadores na nuvem (AWS EventBridge, Google Cloud Scheduler). Estes oferecem funcionalidades como lógica de repetição, dashboards de monitorização e execução distribuída que o cron padrão não tem.

Perguntas frequentes

O cron pode executar uma tarefa a cada 30 segundos?

Não. A resolução mínima do cron é um minuto. Para executar uma tarefa a cada 30 segundos, agende-a a cada minuto e adicione uma pausa de 30 segundos antes de uma segunda execução dentro do mesmo script. Em alternativa, use um temporizador systemd ou um agendador específico da linguagem para intervalos inferiores a um minuto.

Onde está localizado o ficheiro crontab?

Os crontabs de utilizador estão em /var/spool/cron/ (Red Hat/CentOS) ou /var/spool/cron/crontabs/ (Debian/Ubuntu). Edite o seu com "crontab -e" em vez de modificar os ficheiros diretamente. O crontab do sistema está em /etc/crontab e tarefas adicionais podem ser colocadas em /etc/cron.d/.