Italiano

Strumenti per sviluppatori · Generatore di Crontab

campi crontab(5): cosa specifica POSIX e cos'è un'estensione Vixie

· Sfondo

cron portabilità convalida

Una scheda grammaticale a cinque colonne con token accettati e un confine custodito
Illustrazione vettoriale originale ToolAcre

Non tutte le funzionalità di cron sono standard. Questo post separa ciò che richiede la specifica crontab POSIX dalle estensioni (passaggi, nomi, nickname) aggiunti da Vixie cron e presupposti dalla maggior parte dei sistemi Linux.

Un'espressione ToolAcre valida può ancora non essere supportata da un altro scheduler

Una pianificazione che supera ToolAcre ha soddisfatto questo parser, non tutte le implementazioni cron. La portabilità inizia con questa modesta affermazione. Il percorso accetta esattamente cinque campi e una grammatica token definita. Un dispositivo, un servizio o un framework target può accettare meno, più o qualcosa di strutturalmente diverso.

Mantieni il risultato del browser come un unico elemento di prova: espressione, descrizione, avvisi e zona di anteprima. Prima della distribuzione, confrontare la documentazione di destinazione ed eseguire un test innocuo. La validazione diventa pericolosa solo quando un segnale verde locale viene promosso a garanzia di compatibilità universale.

Il repository non stabilisce cosa richiede POSIX

La cartella di lavoro separava i requisiti POSIX dalle estensioni, ma nelle origini del repository non viene visualizzata alcuna specifica POSIX. Il comportamento di ToolAcre non può dimostrare quali caratteristiche siano richieste da uno standard. Questa sezione descrive quindi la sintassi implementata senza assegnarla a un ente di normazione.

Gli intervalli numerici implementati sono 0–59 minuti, 0–23 ore, 1–31 giorni del mese, 1–12 mesi e 0–7 giorni feriali. Caratteri jolly, valori singoli, intervalli inclusivi, elenchi di virgole, passaggi con caratteri jolly, passaggi di intervallo e un semplice valore iniziale con un passaggio vengono tutti analizzati e testati.

Nomi, passaggi, domenica 7 e alias vengono implementati qui senza una richiesta di cronologia degli standard

I nomi dei mesi da JAN a DEC e i nomi dei giorni della settimana da SUN a SAT non fanno distinzione tra maiuscole e minuscole. I nomi possono essere visualizzati da soli, in elenchi e in intervalli. Il giorno della settimana 7 viene accettato come domenica e normalizzato in 0. Queste sono proprietà osservabili di `parseField`, indipendentemente da come le classifica un'altra implementazione.

La tabella alias espande `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight` e `@hourly`. `@reboot` è stato deliberatamente rifiutato perché non ha una pianificazione del calendario di cui visualizzare l'anteprima. Le parole con segno di chiocciola sconosciute ricevono un errore durante la denominazione dell'elenco supportato.

Il supporto per l'assegnazione dell'ambiente è esterno a questo parser

Le assegnazioni di ambiente non fanno parte della grammatica di questa espressione. La casella di input prevede una pianificazione e `parseCron` la divide in cinque parti dopo aver risolto un alias supportato. Non è possibile testare l'espansione, il preventivo o la portabilità di una linea `KEY=value` attraverso questo percorso.

Tale omissione impedisce una falsa affermazione di standard. Un file crontab completo può contenere costrutti che uno strumento di sola espressione non vede mai. Controllali separatamente rispetto al bersaglio. Gli errori di campo precisi di ToolAcre non devono essere riproposti come giudizi su righe non correlate in un file più grande.

Controlla la grammatica di destinazione e utilizza un test programmato innocuo

Il controllo del target dovrebbe iniziare con il conteggio dei campi e degli operatori. Conferma se sono accettati nomi, domenica 7, barre e alias simbolo di chiocciola. Quindi installa un'azione osservabile innocua per un tempo a breve termine, rimuovila dopo aver acquisito le prove e confronta il risultato target con l'espressione prevista.

Non testare la portabilità con un comando sensibile o aspettando una rara data annuale. Scegli la sonda sicura più piccola che distingue il supporto grammaticale. ToolAcre può aiutare a costruire quella pianificazione e spiegarla, mentre l'esecuzione target stabilisce la parte che il browser non può conoscere.

Esempio realizzato: modulo passo ed elenco esplicito nella grammatica di ToolAcre

Per ogni cinque minuti, ToolAcre accetta `*/5 * * * *`. Accetta anche l'elenco verbale esplicito `0,5,10,15,20,25,30,35,40,45,50,55 * * * *`. L'analisi espande entrambi i campi dei minuti sugli stessi dodici valori, in modo che i candidati dell'esecuzione successiva corrispondano nello stesso istante e nella stessa zona iniziale.

L'elenco esplicito può fungere da candidato di fallback quando una destinazione non dispone della sintassi dei passaggi, ma questo repository non può certificare il supporto dell'elenco di quella destinazione. Confronta entrambi i moduli in ToolAcre per l'equivalenza semantica, quindi verifica quale sia il formato dei documenti di destinazione. L'equivalenza qui non è una prova di portabilità lì.

La sintassi a sei campi viene rifiutata; la sua semantica esterna non è documentata qui

Un sesto campo non è accettato. L'errore suggerisce che lo stile dei secondi iniziali appartiene a Quartz o ad un input simile a systemd, ma il parser non implementa tali grammatiche. Non ha un campo per l'anno e nessun operatore `?`, `L`, `W` o `#`.

Contare i campi prima di tentare la traduzione. Se la sintassi non supportata ha un significato di pianificazione, un'apparente riscrittura di cinque campi potrebbe comportare perdite. Utilizza la documentazione e i test per lo scheduler di origine, quindi esprimi solo i requisiti rappresentabili dalla grammatica di destinazione di ToolAcre. Tutto il resto dovrebbe restare un'esplicita incompatibilità.

Conclusione: scopri quali funzionalità sono estensioni e utilizza il generatore per creare e controllare entrambi i moduli quando la portabilità è importante

La portabilità è un confronto, non un'etichetta incorporata in un'espressione. ToolAcre offre un lato ben testato: cinque posizioni, limiti numerici, nomi selezionati, intervalli componibili/lists/steps e sette alias. Fornisce inoltre chiari rifiuti per moduli malformati o stranieri.

Usa quel contratto per ragionare in modo preciso, quindi verifica l'altra parte. Una lista esplicita e un passo possono essere uguali in questo parser mentre solo uno funziona altrove. Segnalare il confine dialettale è più fattibile che invocare uno standard da cui l'articolo non ha effettivamente tratto origine.