OneKitTools logoOneKitTools
developer4 min di lettura

"Espressioni Cron Spiegate: Dalle Basi agli Schedule Avanzati"

Cos'è un'espressione cron? Impara la sintassi, i campi e i caratteri speciali — con esempi reali per schedule comuni come "ogni giorno a mezzanotte" o "ogni lunedì alle 9".

OneKitTools Team14 aprile 2026

Cos'è un'Espressione Cron?

Cron è uno scheduler di job basato sul tempo integrato nei sistemi Unix/Linux. Un'espressione cron è la sintassi che dice a cron quando eseguire un'attività.

Le hai viste: 0 0 * * *. Significa "a mezzanotte, ogni giorno". Ma una volta che si va oltre le basi, la sintassi cron diventa rapidamente complicata — ci sono 5 campi, secondi opzionali, differenze tra piattaforme e caratteri speciali che la maggior parte delle persone copia e incolla senza capire.

Questa guida lo rende comprensibile.

I 5 (o 6) Campi

Il cron standard usa 5 campi separati da spazi:

┌──────────── minuto (0–59) │ ┌────────── ora (0–23) │ │ ┌──────── giorno del mese (1–31) │ │ │ ┌────── mese (1–12) │ │ │ │ ┌──── giorno della settimana (0–7, 0 e 7 sono domenica) │ │ │ │ │ * * * * *

Alcuni sistemi (AWS EventBridge, Spring, Quartz) aggiungono un campo secondi all'inizio, portando a 6 campi. Controlla la tua piattaforma.

Caratteri Speciali

CarattereSignificatoEsempio
*Ogni valore* * * * * = ogni minuto
,Valori multipli0 9,17 * * * = alle 9 e alle 17
-Intervallo0 9-17 * * * = ogni ora dalle 9 alle 17
/Passo*/15 * * * * = ogni 15 minuti
LUltimo0 0 L * * = ultimo giorno del mese (solo Quartz)
?Nessun valore0 0 ? * MON = lunedì, qualsiasi giorno del mese (Quartz)

Espressioni Cron Comuni

Ogni minuto

* * * * *

Ogni 5 minuti

*/5 * * * *

Ogni ora, all'ora esatta

0 * * * *

Ogni giorno a mezzanotte

0 0 * * *

Ogni giorno alle 9

0 9 * * *

Ogni lunedì alle 9

0 9 * * 1

Ogni giorno feriale (lun–ven) alle 8

0 8 * * 1-5

Ogni weekend a mezzogiorno

0 12 * * 0,6

Primo giorno di ogni mese a mezzanotte

0 0 1 * *

Ogni trimestre (gen, apr, lug, ott) a mezzanotte

0 0 1 1,4,7,10 *

Ogni 30 minuti tra le 9 e le 17 nei giorni feriali

*/30 9-17 * * 1-5

Le Trappole

"Ogni 2 ore" è 0 */2 * * *, non */2 * * * *

*/2 * * * * significa ogni 2 minuti. Il passo si applica al campo in cui si trova.

La domenica è sia 0 che 7

Nel cron standard, 0 e 7 significano entrambi domenica. Evita ambiguità — usa 0 in modo coerente.

Giorno del mese E giorno della settimana sono OR, non AND

0 0 1 * 1 viene eseguito il 1° di ogni mese E ogni lunedì — non solo i lunedì che cadono il 1°. Se vuoi "primo lunedì del mese", è più complesso (richiede logica di scripting al di fuori di cron).

Fuso orario

Cron viene eseguito nel fuso orario locale del server se non configurato diversamente. Un job alle 0 9 * * * su un server UTC viene eseguito alle 9 UTC — che potrebbe essere le 2 o le 23 nel tuo fuso orario.

Controlla sempre:

timedatectl   # mostra il fuso orario corrente su Linux

Abbreviazioni (Non standard ma ampiamente supportate)

AbbreviazioneEquivalenteSignificato
@yearly0 0 1 1 *Una volta all'anno
@monthly0 0 1 * *Una volta al mese
@weekly0 0 * * 0Una volta alla settimana (domenica)
@daily0 0 * * *Una volta al giorno (mezzanotte)
@hourly0 * * * *Una volta all'ora
@rebootAll'avvio del sistema

Genera e Valida Espressioni Cron

Il Generatore Cron ti permette di costruire espressioni visivamente — scegli lo schedule in italiano semplice, ottieni l'espressione cron. Niente più supposizioni su se 0 9 * * 1-5 sia corretto.

Funziona anche al contrario: incolla qualsiasi espressione cron e ottieni una spiegazione in linguaggio semplice di quando viene eseguita.

Scheda di Riferimento Rapido

# ┌──── minuto 0-59 # │ ┌─── ora 0-23 # │ │ ┌── giorno 1-31 # │ │ │ ┌─ mese 1-12 # │ │ │ │ ┌ weekday 0-7 (0=Dom) # │ │ │ │ │ * * * * * ogni minuto 0 * * * * ogni ora 0 0 * * * ogni giorno a mezzanotte 0 9 * * 1 ogni lunedì alle 9 */15 * * * * ogni 15 minuti 0 0 1 * * primo giorno di ogni mese
Condividi