Come costruire espressioni cron

· 9 min di lettura

Le espressioni cron sono il modo standard di definire pianificazioni ricorrenti su Linux, nelle piattaforme cloud, nelle pipeline CI/CD e negli scheduler di compiti. La sintassi è compatta ma poco intuitiva, un generatore visivo ti mostra esattamente quando il tuo compito verrà eseguito.

Sintassi cron

Un'espressione cron ha 5 campi:

┌───────────── minuto (0-59)
│ ┌───────────── ora (0-23)
│ │ ┌───────────── giorno del mese (1-31)
│ │ │ ┌───────────── mese (1-12)
│ │ │ │ ┌───────────── giorno della settimana (0-6, domenica=0)
│ │ │ │ │
* * * * *

Pianificazioni cron comuni

Pianificazione Espressione Significato
Ogni minuto * * * * * Eseguito ogni 60 secondi
Ogni 5 minuti */5 * * * * A :00, :05, :10, :15...
Ogni ora 0 * * * * All'inizio di ogni ora
Ogni giorno a mezzanotte 0 0 * * * Una volta al giorno alle 00:00
Ogni giorno alle 9 0 9 * * * Una volta al giorno alle 09:00
Ogni lunedì alle 8 0 8 * * 1 Settimanale di lunedì
Il 1° di ogni mese 0 0 1 * * Mensile a mezzanotte il 1°
Giorni feriali alle 18 0 18 * * 1-5 Da lunedì a venerdì

Come costruire un'espressione cron

  1. Definisci la tua pianificazione, usa i controlli visivi per selezionare i valori di minuto, ora, giorno, mese e giorno della settimana. O parti da un preset come «ogni ora» o «ogni giorno a mezzanotte».
  2. Visualizza l'anteprima delle esecuzioni, il generatore mostra le prossime 5 esecuzioni per verificare che la pianificazione sia corretta.
  3. Copia l'espressione, incollala nella tua crontab, nella tua config CI/CD o nel tuo scheduler cloud.

Caratteri speciali

Carattere Significato Esempio
* Ogni valore * * * * * = ogni minuto
*/n Ogni n */15 * * * * = ogni 15 min
, Più valori 0 8,12,18 * * * = 8, mezzogiorno, 18
- Intervallo 0 9-17 * * * = ogni ora dalle 9 alle 17

Consigli

Domande frequenti

Qual è il formato di un'espressione cron?

Un'espressione cron standard ha 5 campi separati da spazi, che rappresentano minuto (0-59), ora (0-23), giorno del mese (1-31), mese (1-12) e giorno della settimana (0-6, dove 0 è domenica). Un asterisco (*) significa «ogni» valore per quel campo.

Cosa significa */5 in cron?

La sintassi */5 significa «ogni 5». Nel campo minuto, */5 significa ogni 5 minuti (0, 5, 10, 15...). Nel campo ora, */5 significa ogni 5 ore. Funziona in qualsiasi campo.

Le espressioni cron sono identiche su tutte le piattaforme?

Il formato a 5 campi è standard su Linux cron, AWS EventBridge, GitHub Actions e nella maggior parte dei sistemi di pianificazione. Alcune piattaforme aggiungono un 6° campo per i secondi o l'anno. Consulta la documentazione della tua piattaforma.

Come pianificare per l'ultimo giorno di ogni mese?

Il cron standard non ha una parola chiave «ultimo giorno». Usa una soluzione alternativa come un'esecuzione giornaliera con una verifica della data nel tuo script, o usa estensioni proprie della piattaforma (AWS EventBridge supporta L per «last»).

Why did my cron job not run at the expected time?

The most common cause is timezone confusion. Server cron usually runs in UTC, not your local time. Other causes include the server being asleep at the scheduled minute, the user crontab not being installed, or PATH/environment differences between your shell and cron's stripped-down environment.

What is the difference between 0 in the day-of-week field and 7?

Both 0 and 7 represent Sunday in classic Vixie cron, which uses 0-6 plus an alias for 7. Some implementations (notably AWS EventBridge) use 1-7 with Sunday as 7 and Monday as 1, so always check your platform's documentation before assuming.