Generatore di Espressioni Cron
Crea una pianificazione crontab con menu a tendina — minuto, ora, giorno, mese, giorno della settimana — con lettura in chiaro e preimpostazioni comuni.
1.009 visualizzazioni
Come Funziona
Un'espressione cron pianifica un job ricorrente usando cinque campi separati da spazi, sempre nello stesso ordine: minuto · ora · giorno del mese · mese · giorno della settimana. Ogni campo accetta un valore o uno di quattro caratteri speciali: * significa "ogni valore possibile"; */15 significa "ogni 15 unità, a partire dal minimo del campo"; 1,15,30 è un elenco esplicito; 1-5 è un intervallo inclusivo. Leggendo da sinistra a destra, 0 9 * * 1-5 significa "al minuto 0 dell'ora 9, in ogni giorno del mese, in ogni mese, nei giorni della settimana da 1 a 5" — cioè le 9:00 dal lunedì al venerdì. */10 * * * * scatta ogni 10 minuti tutto il giorno, e 0 0 1 * * scatta a mezzanotte del 1° di ogni mese.
Crea una pianificazione dai menu a tendina e questo strumento assembla i cinque campi, poi traduce il risultato in una frase in linguaggio semplice, così puoi verificarne la coerenza prima di incollarla in un file crontab o in uno scheduler cloud. Le preimpostazioni comuni — ogni minuto, ogni ora, ogni giorno a un orario preciso, solo nei giorni feriali — sono a un clic di distanza per le pianificazioni a cui le persone ricorrono più spesso.
Cosa Dovresti Sapere
La sorpresa più grande nella semantica di cron: quando sia il giorno del mese sia il giorno della settimana sono limitati (nessuno dei due è lasciato come *), i due vengono combinati con un OR, non con un AND. Quindi 0 0 15 * 5 non significa "il 15, se è un venerdì" — significa "il 15 del mese, OPPURE ogni venerdì", il che scatta molto più spesso di quanto la maggior parte delle persone intenda. Se conta solo uno dei due, lascia l'altro come *.
Anche la numerazione dei giorni della settimana può sorprendere: sia 0 sia 7 indicano domenica nella maggior parte delle implementazioni di cron, con lunedì come 1. E, cosa cruciale, cron viene sempre eseguito nel fuso orario configurato del server — comunemente UTC sulle infrastrutture cloud — non nel fuso orario locale di chi ha impostato la pianificazione, quindi un job programmato per "le 9 del mattino" potrebbe scattare a un'ora locale diversa da quella attesa finché non viene confermato il fuso orario dell'host. Gli scheduler cloud come schedule: di GitHub Actions, AWS EventBridge e i CronJob di Kubernetes usano tutti questa stessa sintassi a cinque campi come base, a volte con estensioni specifiche del fornitore (un campo opzionale per i secondi, un'abbreviazione per i giorni con nome), quindi una pianificazione creata qui si trasferisce direttamente a quelle piattaforme con una traduzione minima.
Domande Frequenti
Come faccio a eseguire qualcosa ogni 30 secondi?
L'unità minima del cron classico è il minuto. La soluzione comune è usare due voci: una normale, una con `sleep 30 &&` prima del comando — oppure usare i timer di systemd, che supportano i secondi.
Perché il mio job delle 9:00 è partito a un orario strano?
Quasi sempre è il fuso orario: crontab gira nell'ora locale del server (spesso UTC sulle macchine cloud). Verifica con `date` sull'host, oppure imposta CRON_TZ dove supportato.
Come testo un'espressione in sicurezza?
Puntala prima a un comando di log: `* * * * * date >> /tmp/cron-test.log`, conferma la cadenza, poi sostituisci con il comando reale. Verifica anche che l'utente crontab abbia il PATH necessario — l'ambiente di cron è minimale.
Cosa succede quando giorno del mese e giorno della settimana sono impostati entrambi?
Si combinano con OR, non con AND — una pianificazione come `0 0 15 * 5` viene eseguita il 15 del mese E ogni venerdì, non solo in un venerdì che capita di cadere il 15. Cron da solo non può esprimere un'intersezione delle due condizioni; quel controllo deve avvenire all'interno del job stesso.
Cron tiene conto dell'ora legale?
Dipende dall'implementazione, ma il cron classico generalmente segue l'ora locale dell'orologio di sistema, inclusi gli spostamenti dell'ora legale — il che significa che un job pianificato durante l'ora del cambio (in avanti o indietro) può essere eseguito zero o due volte quel giorno. I server impostati su UTC evitano completamente questo problema, il che è un motivo in più per cui la maggior parte degli scheduler di produzione usa UTC come impostazione predefinita.
Posso combinare un intervallo e uno step nello stesso campo, ad esempio un giorno feriale sì e uno no?
Sì — uno step può essere applicato a un intervallo invece che solo a un asterisco: `1-5/2` nel campo del giorno della settimana significa "un giorno ogni due all'interno di lunedì-venerdì", cioè lunedì, mercoledì, venerdì. Questa forma combinata di intervallo/step è supportata dalla maggior parte delle implementazioni cron moderne (incluse Vixie cron e systemd), anche se non dalle più vecchie implementazioni POSIX, quindi testala una volta prima di farci affidamento in un ambiente legacy.
Strumenti Simili
Segnala un Problema
Generatore di Espressioni Cron
Commenti
Ancora nessun commento — scrivi il primo!