Analisador de Expressoes Cron preview

Analisador de Expressoes Cron

Analise expressoes cron em texto legivel. Veja os proximos tempos de execucao e use exemplos predefinidos.

Principais recursos

  • Explicações de cron em linguagem natural
  • Pré-visualização dos próximos 5 horários de execução
  • Expressões predefinidas comuns
  • Detalhamento visual dos campos

Guide

Cron é um sistema de agendamento de tarefas baseado em tempo usado em sistemas operacionais Unix-like para executar comandos ou scripts em intervalos específicos. Uma expressão cron é uma string compacta que define um agendamento usando cinco campos: minuto, hora, dia do mês, mês e dia da semana. Apesar de ser um dos formatos de agendamento mais amplamente usados na computação, expressões cron são notoriamente difíceis de ler de relance. Este guia cobre a sintaxe em detalhe, como ler e escrever expressões, padrões comuns e casos de uso práticos. Os cinco campos de uma expressão cron padrão são organizados da esquerda para a direita: minuto (0-59), hora (0-23), dia do mês (1-31), mês (1-12) e dia da semana (0-7, onde tanto 0 quanto 7 representam domingo). Cada campo aceita valores específicos, faixas, listas e caracteres especiais. Uma expressão completa como 30 14 * * 1-5 significa às 14:30 em todos os dias que sejam de segunda a sexta. O analisador cron WebRecast traduz essas expressões em linguagem simples e mostra os próximos horários de execução agendados. O asterisco (*) é o caractere curinga significando todo valor possível. No campo de minuto, * significa cada minuto. No campo de mês, * significa cada mês. Quando todos os cinco campos são asteriscos (* * * * *), a tarefa executa a cada minuto de cada hora de cada dia. Essa é a expressão cron mais simples e também uma das mais perigosas em produção se você não pretende executar algo com tanta frequência. O caractere barra (/) especifica valores de passo. */5 no campo de minuto significa a cada 5 minutos (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55). */2 no campo de hora significa a cada 2 horas (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22). Você pode combinar passos com faixas: 1-30/5 no campo de minuto significa a cada 5 minutos durante a primeira meia hora (1, 6, 11, 16, 21, 26). Passos facilitam criar intervalos regulares sem listar cada valor. A vírgula (,) cria uma lista de valores específicos. 1,15 no campo de dia do mês significa os dias 1 e 15 do mês. 0,30 no campo de minuto significa no topo da hora e aos 30 minutos. MON,WED,FRI no campo de dia da semana (se sua implementação cron suporta nomes) significa segunda, quarta e sexta. Listas são úteis quando seu agendamento não segue um intervalo regular. O hífen (-) define uma faixa. 9-17 no campo de hora significa cada hora das 9h às 17h. 1-5 no campo de dia da semana significa de segunda a sexta. Faixas são inclusivas, significando que ambos os pontos finais estão incluídos. Você pode combinar faixas com passos: 0-23/2 significa a cada duas horas ao longo do dia e 1-5 no campo de dia da semana com */10 no campo de minuto significa a cada 10 minutos em dias úteis. Algumas implementações cron suportam caracteres adicionais. O ponto de interrogação (?) é usado em alguns sistemas (como o agendador Quartz) para indicar nenhum valor específico para o dia do mês ou dia da semana quando você quer especificar um, mas não o outro. O caractere L significa último (L no campo de dia do mês significa o último dia do mês). O caractere W significa dia útil mais próximo (15W significa o dia útil mais próximo ao dia 15). O caractere hash (#) especifica a enésima ocorrência de um dia da semana (2#3 significa a terceira terça-feira do mês). O cron Unix padrão não suporta esses, mas eles aparecem em agendadores baseados em Java e serviços cron de plataformas em nuvem. Padrões cron comuns cobrem a maioria das necessidades de agendamento. Executar a cada minuto: * * * * *. Executar a cada 5 minutos: */5 * * * *. Executar a cada hora no minuto 0: 0 * * * *. Executar diariamente à meia-noite: 0 0 * * *. Executar diariamente às 3:30: 30 3 * * *. Executar semanalmente no domingo à meia-noite: 0 0 * * 0. Executar mensalmente no dia 1 à meia-noite: 0 0 1 * *. Executar em dias úteis às 9h: 0 9 * * 1-5. Executar a cada 15 minutos durante o horário comercial em dias úteis: */15 9-17 * * 1-5. A ferramenta analisadora de cron inclui essas predefinições comuns para referência rápida. Manipulação de fuso horário é uma consideração crítica que a expressão cron em si não aborda. Uma expressão cron especifica um horário, mas em qual fuso horário? Em um servidor local, o cron tipicamente executa no fuso horário do sistema do servidor. Plataformas em nuvem (AWS CloudWatch, Google Cloud Scheduler, Azure Logic Apps) permitem que você especifique o fuso horário explicitamente. Ao agendar tarefas que servem a um público global ou executam em infraestrutura em nuvem, sempre verifique e documente a qual fuso horário suas expressões cron se referem. Uma tarefa agendada para 0 9 * * * significa 9h no fuso horário do servidor, que poderia ser UTC, seu horário local ou outra coisa inteiramente. Horário de verão cria casos extremos para agendamentos cron. Quando os relógios adiantam, a hora das 2:00 às 3:00 não existe. Uma tarefa agendada para 2:30 durante a transição de primavera pode ser pulada ou executar às 3:00 dependendo da implementação cron. Quando os relógios atrasam, a hora das 1:00 às 2:00 ocorre duas vezes. Uma tarefa agendada durante esse período pode executar duas vezes ou uma dependendo da implementação. Usar UTC para agendamentos cron evita problemas de horário de verão inteiramente, e é por isso que muitos sistemas de produção padronizam em UTC. Execuções sobrepostas acontecem quando uma tarefa leva mais tempo para concluir do que o intervalo entre execuções agendadas. Se uma tarefa é agendada a cada 5 minutos, mas às vezes leva 8 minutos, a próxima execução começa antes de a anterior terminar. Isso pode causar contenção de recursos, corrupção de dados ou processamento duplicado. O sistema cron em si não previne execuções sobrepostas. Soluções incluem usar arquivos de bloqueio (a tarefa verifica por um arquivo de bloqueio no início e sai se um existir), usar flock (um utilitário de bloqueio de arquivo) ou usar um agendador de tarefas com controle de concorrência embutido. Registro e monitoramento de tarefas cron é essencial para confiabilidade de produção. Uma tarefa cron que falha silenciosamente é pior do que uma que nunca executou. Direcione a saída da tarefa para arquivos de log acrescentando >> /var/log/myjob.log 2>&1 ao comando cron. Isso captura tanto a saída padrão quanto os erros. Configure monitoramento para alertá-lo quando uma tarefa falha ou não executa no agendamento. Serviços como Healthchecks.io e Cronitor fornecem monitoramento de botão do homem morto onde sua tarefa cron faz ping em uma URL na conclusão e você é alertado se o ping não chega a tempo. Diferenças de ambiente entre seu shell interativo e o ambiente cron causam muitas falhas de tarefas cron. Quando o cron executa uma tarefa, ele usa um ambiente mínimo que pode carecer de entradas PATH, variáveis de ambiente e configuração de shell que sua sessão interativa tem. Se uma tarefa funciona quando você a executa manualmente, mas falha no cron, a causa provável é uma variável de ambiente ausente ou um executável não encontrado porque não está no PATH do cron. Soluções incluem usar caminhos absolutos para todos os executáveis (/usr/bin/python3 em vez de python3), definir variáveis de ambiente explicitamente no topo do crontab ou carregar seu perfil de shell no início do script da tarefa. O comando crontab gerencia seu agendamento cron. crontab -e abre seu arquivo crontab em um editor. crontab -l lista suas entradas crontab atuais. crontab -r remove todo seu crontab (use com cautela). Cada linha no arquivo crontab é um comentário (começando com #), uma atribuição de variável de ambiente (MAILTO=admin@example.com) ou uma entrada de agendamento (os cinco campos de tempo seguidos do comando para executar). A variável MAILTO envia a saída da tarefa para um endereço de e-mail, o que é um mecanismo de monitoramento útil para pequenas configurações. Cron em todo o sistema é gerenciado através de arquivos em /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.weekly/ e /etc/cron.monthly/. Esses diretórios usam um formato ligeiramente diferente que inclui um campo de nome de usuário entre o agendamento e o comando, especificando qual conta de usuário executa a tarefa. Pacotes do sistema e scripts de administração do servidor tipicamente usam esses locais em vez de crontabs individuais de usuário. Alternativas modernas ao cron incluem systemd timers em sistemas Linux, que oferecem recursos como atrasos aleatórios, gerenciamento de dependências e melhor integração de registro. Plataformas em nuvem oferecem seus próprios serviços de agendamento: AWS EventBridge (anteriormente CloudWatch Events), Google Cloud Scheduler, Azure Logic Apps e Kubernetes CronJobs. Esses serviços usam sintaxe de expressão cron, mas adicionam recursos como políticas de retry, filas de dead letter e painéis de monitoramento. Entender a sintaxe de expressão cron ainda é essencial porque todas essas ferramentas modernas usam o mesmo formato de cinco campos. Kubernetes CronJobs merecem menção especial porque combinam agendamento cron com orquestração de contêineres. Um Kubernetes CronJob cria um novo pod no agendamento, executa a tarefa em um contêiner e limpa quando a tarefa conclui. O campo schedule usa sintaxe cron padrão. Configuração adicional controla a política de concorrência (Allow, Forbid ou Replace), limites de histórico de tarefas bem-sucedidas e falhas, segundos de prazo de início e funcionalidade de suspensão. Se você executa cargas de trabalho em Kubernetes, CronJobs são a maneira padrão de agendar tarefas recorrentes. O analisador cron WebRecast recebe sua expressão e produz três coisas: uma explicação legível por humanos do agendamento (em linguagem simples como a cada 15 minutos em dias úteis), um detalhamento de cada campo mostrando quais valores ele corresponde e os próximos 5 horários de execução agendados com base na data e hora atuais. Isso facilita verificar se sua expressão faz o que você pretende antes de implantá-la em produção. Insira sua expressão, leia a explicação, verifique os próximos horários de execução e confirme que o agendamento corresponde aos seus requisitos. Testar expressões cron antes da implantação previne erros de agendamento que podem ter consequências reais. Uma tarefa de backup que executa a cada hora em vez de diariamente desperdiça espaço em disco. Uma tarefa de faturamento que executa diariamente em vez de mensalmente cobra demais dos clientes. Uma tarefa de limpeza que executa a cada minuto em vez de a cada hora cria carga desnecessária no servidor. Sempre analise e verifique sua expressão cron usando uma ferramenta como esta antes de adicioná-la ao seu crontab ou configuração de agendador em nuvem. Os poucos segundos de verificação podem evitar horas de depuração ou pior.

Perguntas frequentes

O que é uma expressão cron?

Uma expressão cron é uma string de 5 campos (minuto, hora, dia, mês, dia da semana) que define um agendamento para tarefas recorrentes.

O que significa */5 no cron?

A sintaxe */5 significa "a cada 5 intervalos". Por exemplo, */5 no campo de minutos significa a cada 5 minutos.

Guias relacionados

Secoes relacionadas do WebRecast