Ferramentas de desenvolvedor · Gerador Crontab
Campos crontab(5): o que POSIX especifica e o que é uma extensão Vixie
· Fundo
cron portabilidade validação
Nem todo recurso do cron é padrão. Esta postagem separa o que a especificação crontab POSIX exige das extensões (etapas, nomes, apelidos) que o Vixie cron adicionou e a maioria dos sistemas Linux assume.
Uma expressão ToolAcre válida ainda pode não ser suportada por outro agendador
Uma programação que passa em ToolAcre satisfez este analisador, não todas as implementações do cron. A portabilidade começa com essa declaração modesta. A rota aceita exatamente cinco campos e uma gramática de token definida. Um dispositivo, serviço ou estrutura alvo pode aceitar menos, mais ou algo estruturalmente diferente.
Mantenha o resultado do navegador como uma única evidência: expressão, descrição, avisos e zona de visualização. Antes da implantação, compare a documentação de destino e execute um teste inofensivo. A validação só se torna perigosa quando um sinal verde local é promovido a uma garantia de compatibilidade universal.
O repositório não estabelece o que POSIX requer
A pasta de trabalho separou os requisitos POSIX das extensões, mas nenhuma especificação POSIX aparece nas fontes do repositório. O comportamento de ToolAcre não pode provar quais características determinam um padrão. Esta seção, portanto, descreve a sintaxe implementada sem atribuí-la a um órgão de padrões.
Os intervalos numéricos implementados são 0–59 minutos, 0–23 horas, 1–31 dias do mês, 1–12 meses e 0–7 dias de semana. Curingas, valores únicos, intervalos inclusivos, listas de vírgulas, etapas de curinga, etapas de intervalo e um valor inicial simples com uma etapa são todos analisados e testados.
Nomes, etapas, domingo 7 e aliases são implementados aqui sem reivindicação de histórico de padrões
Os nomes dos meses JAN a DEC e os nomes dos dias da semana SUN a SAT não diferenciam maiúsculas de minúsculas. Os nomes podem aparecer sozinhos, em listas e em intervalos. O dia da semana 7 é aceito como domingo e normalizado para 0. Essas são propriedades observáveis de `parseField`, independentemente de como outra implementação as classifica.
A tabela de alias expande `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight` e `@hourly`. `@reboot` foi deliberadamente recusado porque não possui uma programação de calendário para visualização. Palavras com arroba desconhecidas recebem um erro ao nomear a lista suportada.
O suporte à atribuição de ambiente está fora deste analisador
As atribuições de ambiente não fazem parte desta gramática de expressão. A caixa de entrada espera um agendamento e `parseCron` o divide em cinco partes após resolver um alias compatível. Uma linha `KEY=value` não pode ser testada para expansão, cotação ou portabilidade por esta rota.
Essa omissão evita uma alegação de padrões falsos. Um arquivo crontab completo pode conter construções que uma ferramenta somente de expressão nunca vê. Verifique-os separadamente em relação ao alvo. Os erros de campo precisos de ToolAcre não devem ser reaproveitados como julgamentos sobre linhas não relacionadas em um arquivo maior.
Verifique a gramática alvo e use um teste de cronograma inofensivo
A verificação do alvo deve começar com a contagem de campos e operadores. Confirme se nomes, domingo 7, barras e aliases de arroba são aceitos. Em seguida, instale uma ação observável inofensiva por um período de curto prazo, remova-a após a captura da evidência e compare o resultado alvo com a expressão pretendida.
Não teste a portabilidade com um comando sensível ou aguardando uma rara data anual. Escolha a menor sonda segura que distingue o suporte gramatical. ToolAcre pode ajudar a construir esse cronograma e explicá-lo, enquanto a execução alvo estabelece a parte que o navegador não pode saber.
Exemplo resolvido: formulário de etapa e lista explícita na gramática de ToolAcre
A cada cinco minutos, ToolAcre aceita `*/5 * * * *`. Também aceita a lista explícita de minutos `0,5,10,15,20,25,30,35,40,45,50,55 * * * *`. A análise expande ambos os campos de minutos para os mesmos doze valores, de modo que os candidatos da próxima execução correspondam no mesmo instante e zona iniciais.
A lista explícita pode servir como candidato substituto quando um alvo não possui sintaxe de etapa, mas este repositório não pode certificar o suporte à lista desse alvo. Compare os dois formulários em ToolAcre para equivalência semântica e, em seguida, verifique o formato dos documentos de destino. A equivalência aqui não é prova de portabilidade ali.
A sintaxe de seis campos é rejeitada; sua semântica externa não está documentada aqui
Um sexto campo não é aceito. O erro sugere que um estilo de segundos iniciais pertence ao Quartz ou a uma entrada semelhante ao systemd, mas o analisador não implementa essas gramáticas. Não possui campo de ano e nem operadores `?`, `L`, `W` ou `#`.
Conte os campos antes de tentar a tradução. Se a sintaxe não suportada tiver significado de agendamento, uma aparente reescrita de cinco campos poderá causar perdas. Use documentação e testes para o agendador de origem e, em seguida, expresse apenas os requisitos representáveis pela gramática de destino de ToolAcre. Qualquer outra coisa deverá permanecer uma incompatibilidade explícita.
Conclusão: saiba quais recursos são extensões — e use o gerador para criar e verificar ambos os formulários quando a portabilidade for importante
A portabilidade é uma comparação, não um rótulo incorporado numa expressão. ToolAcre fornece um lado bem testado: cinco posições, limites numéricos, nomes selecionados, intervalos combináveis/lists/steps e sete aliases. Também fornece recusas claras para formulários malformados ou estrangeiros.
Use esse contrato para raciocinar com precisão e depois verifique o outro lado. Uma lista explícita e uma etapa podem ser iguais neste analisador enquanto apenas uma funciona em outro lugar. Relatar o limite do dialeto é mais prático do que invocar um padrão que o artigo não tenha realmente originado.