Command Palette

Search for a command to run...

Gerador de Expressão Cron: Construa um Cronograma Crontab em que você possa confiar

Gerador de Expressão Cron: Construa um Cronograma Crontab em que você possa confiar

T
Toolz Team
|Aug 23, 2026|16 min ler

Parte da coleção Hora e data

O pior bug de produção que EU já causei foi um personagem em uma expressão cron Eu queria um backup de banco de dados para executar todas as noites à meia-noite Eu escrevi 0 0 * * * na minha cabeça, digitado 0 0 * * 0 no crontab, e seguiu em frente O trabalho correu uma vez - no domingo seguinte - e depois não novamente por uma semana Eu descobri quando EU precisava de um backup que não existia Aquele único dígito extraviado virou & quot; todos os dias & quot; em & quot; todos os domingos, & quot; e nada na sintaxe me avisou Cron faz exatamente o que você diz, silenciosamente, para sempre.

tl;dr: o Gerador de expressão cron constrói uma expressão crontab padrão de cinco campos a partir de campos simples ou predefinições de um clique, explica-a em uma frase enquanto você digita e visualiza os próximos tempos de execução em UTC para que você possa confirmar a programação antes que ela atinja a produção Ele é executado inteiramente em seu navegador - sem conta, sem upload.

Eu construí esta ferramenta para Toolz.dev porque EU nunca mais queria cometer um cronograma EU tinha verificado apenas na minha cabeça Lendo uma expressão cron de volta como inglês simples e vendo as datas reais que vai disparar pega o 0 -versus- * classe de erro instantaneamente Este guia aborda como funciona a sintaxe do cron, as interações que tropeçam em quase todos e como usar o gerador para produzir uma expressão em que você possa confiar.

O que é uma expressão cron?

Uma expressão cron é um cronograma compacto feito de cinco campos separados por espaços Da esquerda para a direita eles são minuto, hora, dia do mês, mês e dia da semana O formulário de cinco campos é especificado pelo POSIX no formato de entrada Crontab. Um agendador - o clássico Unix cron daemon, mas também sistemas CI, Kubernetes CronJobs e inúmeros corredores de tarefas - lê a expressão e dispara seu trabalho a cada momento que corresponde a todos os campos.

Cada campo aceita mais de um único número Uma estrela (a star)*) significa o & quot; every" valor desse campo Uma lista como 1,15,30 significa vários valores específicos. Um intervalo como 1-5 significa um vão inclusivo. Um passo como */15 significa que o & quot; cada décimo quinto & quot; valor que começa no campo & #39; s mínimo Você combina estes nos cinco campos para descrever quase qualquer programação recorrente: cada minuto, a cada quarto de hora, dias da semana às 8 da manhã, o primeiro de cada mês, o último trimestre & #39; s dia de abertura O poder é real, e assim é a densidade - cinco campos podem codificar um cronograma surpreendentemente preciso, e é exatamente por isso que eles são fáceis de obter sutilmente errado.

Aqui está o layout de campo que o gerador usa, com o intervalo válido para cada:

Posição campo Alcance notas
1 minuto 0–59
2 hora 0–23 Relógio de 24 horas
3 dia do mês 1–31
4 mês 12 JANDEC também aceito
5 dia da semana 06 0 e 7 significam domingo; SUNSAT aceito

Por que gerar a expressão em vez de escrevê-la à mão

Escrever cron à mão é uma aposta que você lembrou da ordem do campo, dos intervalos e das interações corretamente, sem feedback até que o trabalho seja executado ou não. O gerador substitui essa aposta pela confirmação. Ao preencher os campos, ele faz três coisas ao mesmo tempo.

Primeiro, ele monta e valida a expressão, capturando valores fora de alcance, intervalos invertidos e etapas malformadas com uma mensagem que nomeia o campo ofensivo Uma expressão como 0 25 * * * - a hora 25 não existe - é rejeitada com uma explicação em vez de aceita e silenciosamente nunca corre.

Em segundo lugar, traduz o cronograma como uma frase. 0 8 * * 1-5 torna-se o & quot; Às 08:00 de segunda a sexta." Ler o horário em palavras é a maneira mais rápida de perceber que o que você construiu não é o que você quis dizer Meu bug de backup da meia-noite teria sido óbvio no instante em que li o & quot; Às 00:00 no domingo" em vez do " Às 00:00."

Terceiro, ele visualiza os próximos tempos de execução reais Ver que um trabalho será lançado em três meses, em vez de hoje à noite, diz que algo está errado muito mais visceralmente do que olhar para asteriscos. Esta prévia também captura horários impossíveis - peça para o dia 30 de fevereiro e o gerador não mostra nenhuma execução futura, porque não há nenhuma.

Como usar o Gerador de Expressão Cron

Passo 1: Comece a partir de uma predefinição ou de uma lousa em branco

A rota mais rápida para uma expressão correcta é começar por uma que já esteja próxima Escolha uma predefinição como o & quot; Weekdays às 8 da manhã, & quot; & quot; Cada 15 minutos, & quot; ou & quot; First of month at midnight, & quot; e os campos carregam prontos para ajustar Se nenhum encaixa, comece a partir do padrão de cada minuto e edite para baixo As predefinições existem porque a maioria dos horários reais são variações em uma dúzia de padrões comuns, e começar a partir de uma expressão conhecida-boa elimina toda uma categoria de erros.

Passo 2: Defina os cinco campos

Insira um valor em cada campo ou deixe-o como * para o & quot; every." cada campo aceita um único valor, uma lista de vírgulas, um intervalo de hífen ou um passo de barra Por exemplo, para correr no topo de cada hora durante o horário comercial durante a semana, defina minuto para 0, hora para 9-17, e dia da semana para 1-5, deixando dia do mês e mês como *. A dica em cada campo lembra seu intervalo válido para que você não precise memorizar o pedido.

Passo 3: Leia a descrição em inglês simples

Assista à atualização da descrição enquanto digita Este é o passo que o salva Se a frase não corresponder à programação em sua cabeça, a expressão está errada, e você descobriu no navegador em vez de na produção uma semana depois Confirme a hora, os dias e qualquer restrição de mês leia da maneira que você pretende.

Passo 4: Verifique as próximas execuções e copie

Clique para visualizar os próximos tempos de execução, calculados em UTC. Digitalize-os para qualquer coisa surpreendente - uma lacuna muito longa, uma primeira execução muito distante ou uma lista vazia sinalizando uma data impossível. Quando a programação parecer correta, copie a expressão e cole-a em seu manifesto crontab, pipeline ou CronJob.

A armadilha do dia do mês e do dia da semana

Se você se lembra de uma coisa sobre o cron, faça isso, porque surpreende quase todo mundo na primeira vez. Quando ambos o campo do dia do mês e o campo do dia da semana são restritos - o que significa que nenhum deles é * - cron padrão combina-os com OR, não com AND. O trabalho é executado quando também condition corresponde.

Então 0 0 13 * 5 não significa que o & quot; meia-noite de sexta-feira dia 13. & quot; Significa o & quot; meia-noite dia 13 de cada mês, e também meia-noite de cada sexta-feira. & quot; São horários muito diferentes; o segundo dispara muitas vezes por mês Esse comportamento vem direto da implementação original do Vixie cron que a maioria dos agendadores herdam, e o gerador honra exatamente Sua visualização de próxima execução mostrará os 13 e as sextas-feiras, que é a maneira mais clara possível de capturar um OR não intencional.

A regra prática: deixar um dos dois campos de dia como * a menos que você queira genuinamente o comportamento OR. Se você realmente precisar do & quot; Sexta-feira 13 apenas, o & quot; o cron não pode expressá-lo em uma expressão - você lida com essa lógica em seu trabalho Ver as datas reais de execução na visualização é o que transforma isso de um gotcha à espreita em um fato óbvio e visível.

Etapas, intervalos e listas na prática

A sintaxe do passo é onde vive muito poder de agendamento e onde começa muita confusão. */5 no campo de minutos significa minutos 0, 5, 10, 15 e assim por diante para 55 - " a cada cinco minutos." Você pode ancorar um passo em um intervalo: 0-30/10 significa apenas os minutos 0, 10, 20 e 30. Um valor simples com um passo, como 5/15 no campo de minutos, significa " começando em 5, a cada 15 & quot; até o campo máximo - 5, 20, 35, 50.

Listas e intervalos combinam-se livremente. 1,4,7,10 no mês campo dá-lhe uma programação trimestral - Janeiro, Abril, Julho, Outubro. 1-5 no dia da semana dá de segunda a sexta. 9-17 no campo de horas dá-lhe uma janela de nove a cinco Misturando-os, 0 9-17 * * 1-5 lê como & quot; no minuto 0 de cada hora das 9 h às 17 h, de segunda a sexta-feira & quot; - um batimento cardíaco comum de horas de negócios O gerador expande e valida tudo isso, e a descrição explica o que você construiu para que não haja ambiguidade sobre, digamos, se um intervalo é inclusivo (é).

Casos de uso comuns

Backups e manutenção programados. O trabalho canônico do cron. Gerar 0 2 * * * para um backup noturno às 2 da manhã, leia a descrição para confirmar que é diária e não semanal, e visualize as próximas execuções para ter certeza de que a primeira é esta noite Este é o erro exato que cometi anos atrás, e o exato que a visualização impede.

CI e cronogramas de implantação. As compilações noturnas, as execuções de teste agendadas e as implantações periódicas usam a sintaxe cron no GitHub Actions, no GitLab CI e em sistemas similares Construa a expressão aqui, confirme-a e cole-a em seu arquivo de fluxo de trabalho. Como esses sistemas são executados em seus próprios servidores, observe a ressalva de fuso horário abaixo.

Pipelines de dados e relatórios. Um relatório semanal todas as segundas-feiras às 6 da manhã é 0 6 * * 1; um rollup mensal no primeiro é 0 0 1 * *; um trabalho trimestral é 0 0 1 1,4,7,10 *. Gerar estes e lê-los de volta interrompe o clássico & quot; correu no dia errado & quot; incidente do pipeline.

Aquecimento de cache e batimentos cardíacos. Trabalhos de alta frequência como */5 * * * * mantenha os caches aquecidos ou os exames de saúde tique-taque A visualização confirma que o intervalo é o que você espera, em vez de, digamos, uma vez por hora, porque você coloca o passo no campo errado.

Aprendendo cron. Se você ainda está construindo intuição, o gerador é uma ferramenta de ensino Digite uma expressão, leia a frase, veja as execuções, e o mapeamento entre sintaxe e comportamento se torna concreto de uma forma que a documentação sozinha nunca gerencia.

Uma nota sobre fusos horários

A próxima execução de visualização calcula os tempos em UTC para que o resultado seja determinístico e o mesmo para todos que lêem isso Os daemons de cron reais, no entanto, são executados no fuso horário local do servidor & #39; s, a menos que configurados de outra forma, e os provedores de CI têm cada um sua própria convenção - muitos padrão para UTC, alguns não. A expressão em si não carrega fuso horário; é o agendador que decide Então, quando você mover uma expressão desta ferramenta para um sistema ativo, confirme esse sistema & #39; s fuso horário e compense os tempos de execução em sua cabeça de acordo A 0 0 * * * o trabalho é meia-noite - mas meia-noite onde depende inteiramente de onde o trabalho é executado Se você precisar raciocinar sobre deslocamentos de fuso horário, o conversor fuso horário é útil e o conversor timestamp ajuda quando o seu agendador faz logs é executado como carimbos de data/hora Unix.

Gerando versus analisando uma expressão

Esta ferramenta constrói uma expressão a partir de campos Seu irmão, o analisador de expressão cron, vai para o outro lado: cole uma expressão existente e ela a explica e visualiza suas execuções As duas cobrem as duas direções do mesmo problema Use o gerador quando souber a programação que deseja e precisar da sintaxe; use o analisador quando tiver herdado uma expressão e precisar entender o que ela faz Ambas honram a mesma semântica Vixie-cron, incluindo a regra do dia do mês OU do dia da semana, então a descrição que você lê em uma corresponde ao comportamento que você veria na outra Juntas elas são um par pequeno e focado dentro do kit mais amplo que descrevo no Kit de ferramentas para desenvolvedores web visão geral e mais ampla Guia de ferramentas de codificação.

Privacidade: tudo é executado no seu navegador

Não há nada para carregar aqui, e nada é carregado A expressão é construída, validada, descrita e simulada inteiramente em código do lado do cliente Isso importa mais do que pode parecer: os horários internos de trabalho podem revelar coisas sobre um sistema' s arquitetura e cadência que você não gostaria de sentar em um terceiro & #39; s logs Você pode confirmar que a ferramenta é independente desconectando-se da internet - ela continua funcionando Este é o mesmo princípio do lado do cliente por trás de cada ferramenta no Toolz.dev, que EU faço o caso completo no Privacidade de dados em ferramentas online artigo.

FAQ

Como escrever uma expressão cron?

Uma expressão cron padrão tem cinco campos separados por espaços: minuto, hora, dia do mês, mês e dia da semana Cada campo é um valor específico, uma lista, um intervalo, um passo ou * para cada. Por exemplo, 0 8 * * 1-5 significa às 08:00 de segunda a sexta-feira Esta ferramenta constrói a expressão para você e mostra o que significa à medida que você avança.

O que significam os cinco campos do cron?

Da esquerda para a esquerda para a direita (0 direita eles 9), hora 2 minuto 3), mês (13 1), mês 1 2), e dia da semana (06, onde 0 e 7 ambos significam domingo).Uma estrela em um campo significa " every" valor desse campo A ferramenta rotula cada campo para que você não precise lembrar a ordem.

O que faz */5 média em cron?

A barra introduz um valor de passo No campo de minutos, */5 significa & quot;a cada 5 minutos & quot; - 0, 5, 10, 15, e assim por diante Você pode combinar etapas com intervalos também: 0-30/10 no campo de minutos significa os minutos 0, 10, 20 e 30. as etapas são a maneira padrão de expressar & quot; todas as N unidades."

Por que meu trabalho funciona com mais frequência do que o esperado com o conjunto do dia do mês e do dia da semana?

Esta é a surpresa cron mais comum Quando ambos os campos do dia do mês e do dia da semana são restritos (nenhum é *), cron padrão trata-os como OR, não AND - o trabalho é executado quando qualquer condição corresponde. Então 0 0 13 * 5 funciona no dia 13 do mês e todas as sextas-feiras, não só na sexta-feira dia 13 Deixe um campo como * a menos que você realmente queira o comportamento da sala cirúrgica.

Em que fuso horário os próximos tempos de execução são mostrados?

A visualização calcula as próximas execuções em UTC para que o resultado seja o mesmo para todos Os daemons de cron reais usam o fuso horário do servidor (ou uma configuração TZ), portanto, se o seu servidor for executado em uma zona diferente, desloque os tempos de acordo A expressão em si não carrega fuso horário - é o agendador que decide.

Posso usar nomes como mon ou jan em vez de números?

Sim. O campo do mês aceita JAN completo DEC e o campo do dia da semana aceita SUN completo SAT, case-insensitive. A ferramenta os entende ao validar e descrever sua expressão Os valores numéricos são mais portáteis entre os escalonadores, de modo que o gerador emite números, mas a entrada nomeada é totalmente suportada.

É o mesmo que sintaxe crontab?

Sim, isso gera cron Unix/Vixie padrão de cinco campos usado pelo crontab, pela maioria dos sistemas CI e pelo Kubernetes CronJobs Alguns agendadores adicionam um campo de sexto segundo ou extensões não padrão como @reboot; aqueles não fazem parte do padrão de cinco campos Para a grande maioria das necessidades de agendamento, a expressão de cinco campos que esta ferramenta produz é exatamente o que você deseja.

Minha agenda é enviada para qualquer lugar?

Não. A expressão é construída, validada, descrita e simulada inteiramente no seu navegador com código do lado do cliente. Nada é carregado ou armazenado. Você pode confirmar isso desconectando-se da Internet - o gerador ainda funciona.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!