Generatore di espressioni cron:
quando scatterà?
Scegli una frequenza e un orario. Il builder scrive l'espressione a cinque campi, la rilegge in italiano semplice ed elenca le prossime dieci date in cui scatterà — così controlli la pianificazione prima che arrivi in un crontab, non dopo l'esecuzione delle 03:30.
Leggere 30 3 * * 1-5
Ogni espressione cron risponde alle stesse cinque domande, da sinistra a destra — qui applicate a una pianificazione reale.
Letta come frase: dal lunedì al venerdì, alle 03:30. 30 3 * * 1-5
Guarda la pianificazione prima che parta cron
Di solito, la prima vera prova di un'espressione cron è l'esecuzione delle 03:30 in produzione. Questo generatore sposta quel test nel tuo browser:
- Domande strutturate, non supposizioni. Frequenza, giorno, orario — ogni ambiguità della versione in italiano diventa un controllo esplicito.
- Le prossime dieci esecuzioni, calcolate. Un parser reale scorre il calendario così puoi leggere la pianificazione come date, non come sintassi.
- Output POSIX portabile. Cinque campi, solo numeri — funziona su qualsiasi crontab, da Alpine ad AIX. I simboli esotici restano segnalati, non generati.
Un'espressione cron, campo per campo
*/15 9-17 * * 1-5Cosa significano *, */5 e @daily
Cinque funzionano in qualsiasi crontab. Il sesto è esclusivo di Quartz e non si installa.
Corrisponde a tutto — il valore predefinito, e il più «rumoroso». Nel campo minuto significa sessanta esecuzioni all'ora, ed è lì che nasce il ticket «perché è partito 60 volte».
Uno step — ogni 5° valore. Gli step non si propagano tra i campi: */90 nel campo minuto diventa silenziosamente «a :00» — una cadenza di 90 minuti richiede due righe.
Un intervallo — lun–ven nel campo giorno della settimana, 9–17 nel campo ora. Si combina con una lista: 1-5,0 significa giorni feriali più domenica.
Una lista — valori esatti, separati da virgola. Il modo portabile per dire «due volte all'ora» oppure «gennaio, aprile, luglio, ottobre».
Alias — @hourly @daily @weekly @reboot. Comodi dove sono supportati, ma @reboot scatta quando parte il demone cron, il che non coincide sempre con un riavvio del sistema.
Non è cron. # L W ? appartengono a Quartz — Jenkins, Spring, alcuni tool CI. Incollali in un crontab e la riga non si installa.
Pianificazioni cron già pronte
Sono tutte POSIX valide. Per i casi meno comuni, come «ogni 2 marzo alle 17:30», guarda la nostra libreria di esempi cron.
Trappole cron comuni
Entrambe calcolate in diretta nel browser, senza passare dal server.
Domande frequenti sulle espressioni cron
Trasforma una pianificazione che puoi descrivere a parole, come «ogni giorno feriale alle nove», nell'espressione a cinque campi che cron legge: 0 9 * * 1-5. Questo strumento va oltre: rilegge l'espressione in italiano e calcola le sue prossime dieci esecuzioni, così puoi controllare la pianificazione come date. Segnala anche le due trappole classiche: la regola OR dei campi giorno e l'errore dell'asterisco al posto dello zero.
Da sinistra a destra: minuto (0–59), ora (0–23), giorno del mese (1–31), mese (1–12), giorno della settimana (0–7, dove sia 0 che 7 indicano domenica). Ogni campo accetta un numero, una lista (0,30), un intervallo (1-5), uno step (*/15), oppure * per «qualsiasi». Alcuni scheduler aggiungono un sesto campo per i secondi (Quartz, Spring) — un crontab non lo accetta.
Non in una riga sola — gli step non riportano il resto tra un campo e l'altro, quindi */90 nel campo minuto significa solo «a :00». La soluzione sono due righe di crontab che si alternano: 0 0-21/3 * * * (00:00, 03:00, 06:00…) più 30 1-22/3 * * * (01:30, 04:30, 07:30…) — insieme, ogni 90 minuti. Lo stesso trucco copre qualsiasi cadenza che non divide 60.
Perché il campo minuto era *. * 3 * * * significa «ogni minuto in cui l'ora è 3» — dalle 03:00 alle 03:59, sessanta esecuzioni. Quello che intendevi era 0 3 * * *. È l'errore cron per eccellenza, ed è il motivo per cui questo strumento scrive sempre un minuto esplicito, a meno che tu non scelga letteralmente «ogni minuto».
Cron scatta quando corrisponde uno qualsiasi dei due — unione, non intersezione. È scritto nello standard POSIX, e trae in inganno molte persone. Prendi 0 9 1-7 * 1, un tentativo naturale di dire «il primo lunedì del mese». Scatta nei giorni 1–7 e ogni lunedì: 10 o 11 mattine al mese invece di una. La vista trappola di questa pagina calcola entrambe le letture affiancate e mostra la soluzione portabile.
L'ora locale del server — cron non ha un campo per il fuso orario. Se il server gira in UTC (come la maggior parte delle immagini cloud), le 09:00 nel crontab sono le 09:00 UTC. Alcuni cron (cronie su RHEL/Fedora, FreeBSD) rispettano una riga CRON_TZ=; il classico vixie-cron di Debian no. E attenzione al cambio dell'ora se il server usa un fuso locale: nelle notti del cambio le 02:30 possono capitare due volte — o mai. Pianificare fuori dalla fascia 01:00–03:00, oppure tenere i server su UTC, evita del tutto il problema.
Cron registra di aver avviato il job; niente di integrato ti dice se è andato a buon fine. Tre livelli: reindirizza l'output verso un log (>> /var/log/job.log 2>&1), imposta MAILTO= su un indirizzo che qualcuno legge, poi aggiungi un controllo indipendente sul risultato. Il terzo livello funziona ovunque l'output sia visibile dall'esterno: una pagina rigenerata, un certificato rinnovato, una sitemap. La vista sugli errori silenziosi di questa pagina ripercorre l'intero scenario di guasto.
Continua a esplorare
Gli strumenti gratuiti sono solo l'inizio.
Uptimia si prende cura dei tuoi siti.
Uptime, SSL, scadenza dominio, velocità delle pagine, transazioni — monitorati da 171+ punti in tutto il mondo. Gratis per 30 giorni.