Português (Brasil)

Ferramentas de desenvolvedor · Gerador Crontab

@reboot, @daily, @hourly: de onde vieram as programações de apelidos do cron

· Fundo

cron apelidos agendamento

Sete aliases de agendamento nomeados expandindo-se em cinco campos ao lado de um símbolo de reinicialização bloqueada
Ilustração vetorial original ToolAcre

As abreviaturas @ são legíveis, populares e não universais. Esta postagem explica para onde cada um se expande, de onde veio, o caso especial de @reboot e quando escrever os cinco campos.

@reboot foi recusado porque a ferramenta visualiza os horários do calendário, não os eventos de inicialização

`@reboot` se parece com os outros formulários com arroba, mas não tem expansão de calendário de cinco campos em ToolAcre. O analisador recusa por um motivo explícito: não há programação para visualização. Um evento de inicialização depende do ciclo de vida de uma máquina ou serviço que esta rota do navegador não observa nem controla.

Essa distinção mantém a lista da próxima execução honesta. Os aliases de calendário podem se tornar campos e datas concretos. Um alias de reinicialização não pode produzir cinco futuros candidatos a relógios de parede a partir do instante atual sem inventar reinicializações futuras. A recusa é, portanto, mais precisa do que uma previsão vazia ou fabricada.

Os apelidos e suas expansões — @hourly, @daily e @midnight, @weekly, @monthly, @yearly e @annually como equivalentes de cinco campos

A tabela suportada é exata. `@hourly` torna-se `0 * * * *`; `@daily` e `@midnight` tornam-se `0 0 * * *`; `@weekly` torna-se `0 0 * * 0`; `@monthly` torna-se `0 0 1 * *`; e `@yearly` mais `@annually` tornam-se `0 0 1 1 *`.

A IU resolve um alias aceito antes de copiar os valores nas cinco caixas individuais. A análise retorna a expressão normalizada de cinco campos, as descrições usam esse formulário analisado e os testes iteram por cada alias. A expansão é, portanto, inspecionável e não uma abreviação oculta.

Nenhum comportamento de inicialização do daemon ou inicialização do sistema é modelado

Nenhum código neste caminho recebe eventos de inicialização do sistema operacional. Não há processo daemon, identificador de inicialização ou gráfico de dependência de serviço. As declarações da pasta de trabalho sobre quando `@reboot` é executado não podem ser estabelecidas a partir de um analisador que rejeita deliberadamente o token.

Se um destino oferecer suporte a um apelido de inicialização, consulte a definição de ciclo de vida desse destino e teste-o com segurança. Não use o erro de ToolAcre como prova de que o recurso é universalmente inválido e não use o suporte de outra implementação como prova de que esta rota deve visualizá-lo.

As origens do alias e a disseminação entre implementações exigem fontes históricas externas

A pasta de trabalho atribuiu aliases a uma implementação histórica e descreveu sua distribuição. O repositório não contém nenhuma fonte de histórico primária para essa declaração. O que isso prova é o comportamento no tempo presente: sete chaves em `ALIASES`, pesquisa sem distinção entre maiúsculas e minúsculas e rejeição de taquigrafias desconhecidas.

Isso é suficiente para documentação prática. Os leitores podem ver exatamente quais formulários funcionam aqui e para onde eles se expandem. A proveniência pode ser adicionada posteriormente com uma fonte de arquivo; não deve ser inferido de um nome constante ou da popularidade de sintaxe semelhante em outro lugar.

Exemplo resolvido: substituindo @daily por 0 0 * * * - e por que o formulário explícito também permite adiar o horário da meia-noite

Substituir `@daily` por `0 0 * * *` expõe os campos de hora. Alterar a hora de 0 para 4 produz `0 4 * * *`, que a ferramenta descreve como 04:00 todos os dias. A forma explícita é melhor quando meia-noite não é o horário pretendido.

As caixas de campo facilitam esse ajuste e o fuso horário selecionado controla os instantes de visualização. A expressão copiada não contém nenhum alias após a expansão no resultado do analisador, mas o texto original pode permanecer na caixa da expressão inteira até que um campo seja alterado. Revise o valor real copiado antes da implantação.

A ordem e as dependências no momento da inicialização estão fora do gerador

O trabalho de inicialização geralmente depende de sistemas de arquivos, redes, credenciais ou outros serviços. ToolAcre não tem modelo de dependência e não pode avaliar prontidão, atrasos ou comportamento de reinicialização. Mesmo que aceitasse `@reboot`, a validação da expressão não resolveria essas questões operacionais.

Trate a execução no momento da inicialização como um projeto de ciclo de vida, em vez de um atalho de calendário. Documente os pré-requisitos e o tratamento de falhas no ambiente de destino. O gerador permanece apropriado para programações recorrentes de cinco campos cujos próximos tempos de relógio podem realmente ser calculados.

As alternativas do gerenciador de serviços não são avaliadas aqui

A apostila apontava para unidades de serviço modernas, mas este repositório não as constrói ou compara. Nenhuma sintaxe de unidade, diretiva de dependência ou teste de inicialização está entre as fontes. O artigo, portanto, evita recomendar uma substituição baseada apenas em um apelido não suportado.

Escolha um mecanismo de ciclo de vida a partir da documentação alvo e dos requisitos operacionais. A contribuição de ToolAcre é o limite negativo: `@reboot` está fora de seu domínio visualizável, enquanto os aliases de calendário comuns têm equivalentes transparentes de cinco campos.

Conclusão: apelidos são ótimos para expressões fixas - e o gerador permite que você crie a versão explícita e leia-a de volta

Aliases são rótulos concisos para expressões fixas nesta implementação. Expanda-os sempre que a revisão ou personalização se beneficiar da visualização das posições. `@daily` não é mágico; é meia-noite em todos os campos irrestritos do calendário na zona de visualização selecionada.

Use a lista de suporte, inspecione a expansão e afaste-se da meia-noite quando apropriado. Para eventos de inicialização, pare e selecione um mecanismo específico de destino em vez de forçar um gatilho de ciclo de vida não previsível em um gerador de calendário. Esse limite é deliberado e testado.