Sintassi delle Espressioni Cron: Una Guida Completa con Esempi
Sintassi delle Espressioni Cron
Cron è lo scheduler di job standard sui sistemi Unix-like. Ogni espressione cron definisce una pianificazione in una stringa compatta che specifica quando un comando deve essere eseguito. Comprendere la sintassi è essenziale per automatizzare backup, rotazione dei log e attività di manutenzione.
Il Formato a 5 Campi
Un'espressione cron standard ha cinque campi separati da spazi:
* * * * *
| | | | |
| | | | +----- Day of the Week (0-7, 0 and 7 = Sunday)
| | | +------- Month (1-12)
| | +--------- Day of the Month (1-31)
| +----------- Hour (0-23)
+------------- Minute (0-59)
Dettagli dei Campi
| Campo | Intervallo | Caratteri Speciali | Esempio |
|-------|-----------|--------------------|---------|
| Minuto | 0-59 | , - * / | 30 = al minuto 30 |
| Ora | 0-23 | , - * / | 6 = alle 6 del mattino |
| Giorno del Mese | 1-31 | , - * / | 15 = il 15 |
| Mese | 1-12 | , - * / | 6 = a giugno |
| Giorno della Settimana | 0-7 | , - * / | 0 = di domenica |
Il minuto controlla il minuto esatto di esecuzione: 30 * * * * viene eseguito al minuto 30 di ogni ora. L'ora definisce il momento della giornata: 0 6 * * * viene eseguito alle 6:00 ogni giorno. Il giorno del mese limita a date di calendario specifiche: 0 0 15 * * viene eseguito il 15 di ogni mese a mezzanotte. Il mese limita l'esecuzione a mesi specifici: 0 0 1 6 * viene eseguito il 1 giugno. Il giorno della settimana controlla quali giorni della settimana: 0 8 * * 1-5 viene eseguito alle 8 dal lunedì al venerdì.
Importante: I giorni 29-31 vengono eseguiti solo nei mesi che hanno quelle date. Nei mesi più corti, questi valori vengono saltati silenziosamente.
Caratteri Speciali
| Car | Nome | Scopo | Esempio |
|-----|------|-------|---------|
| * | Asterisco | Tutti i valori possibili | * nel minuto = ogni minuto |
| , | Virgola | Elenca i valori | 1,15,30 = minuti 1, 15, 30 |
| - | Trattino | Intervallo | 9-17 = ore dalle 9 alle 17 |
| / | Barra | Valori di passo | */5 = ogni 5 minuti |
Valori di Passo con la Barra
La barra esprime "ogni N unità":
# Every 5 minutes
*/5 * * * *
# Every 2 hours
0 */2 * * *
# Every 15 minutes during business hours
*/15 9-17 * * *
Pattern Comuni di Pianificazione Cron
| Pianificazione | Espressione | Descrizione |
|----------------|-------------|-------------|
| Ogni minuto | * * * * * | Viene eseguito 1.440 volte al giorno |
| Ogni 5 minuti | */5 * * * * | Controlli di integrità, monitoraggio |
| Ogni ora | 0 * * * * | All'inizio di ogni ora |
| Due volte al giorno | 0 6,18 * * * | Alle 6 e alle 18 |
| Giornaliero a mezzanotte | 0 0 * * * | Manutenzione classica |
| Settimanale di domenica | 0 0 * * 0 | Manutenzione settimanale |
| Primo del mese | 0 0 1 * * | Report mensili |
| Giorni lavorativi alle 9 | 0 9 * * 1-5 | Inizio dell'orario di lavoro |
Scorciatoie Non Standard
Alcune implementazioni di cron supportano scorciatoie con nome: @yearly (1 gennaio), @monthly (primo del mese), @weekly (domenica), @daily (mezzanotte), @hourly e @reboot (viene eseguito una volta all'avvio del sistema). Supportate da Vixie cron, cronie e dai timer di systemd.
Errori Comuni
- Impostare sia il giorno del mese sia il giorno della settimana crea una condizione OR — il job viene eseguito quando uno dei due corrisponde, cosa che raramente è l'intenzione.
- Cron usa il fuso orario di sistema. I job vicini alle transizioni dell'ora legale possono essere eseguiti due volte o per niente.
- Conta sempre cinque campi. Quattro campi non sono validi; sei campi richiedono la sintassi cron estesa.
Testa le Tue Espressioni Cron
Usa il validatore di espressioni cron per controllare la sintassi, visualizzare in anteprima i prossimi orari di esecuzione e individuare gli errori prima che colpiscano la produzione. Un controllo di validazione di trenta secondi previene errori di pianificazione silenziosi.