alltools.one
DevOpsโ€ข
2026-02-25
โ€ข
11 min
โ€ข
alltools.one Team
cronschedulingdevopsautomationlinux

Cheat Sheet Espressioni Cron โ€” Pianifica i Job come un Professionista

Cron รจ la spina dorsale dell'automazione delle attivitร  pianificate sui sistemi Unix-like. Che tu stia ruotando i log, eseguendo backup del database o attivando pipeline CI/CD, le espressioni cron definiscono quando quei job vengono eseguiti. La sintassi รจ compatta ma potente โ€” e facile da sbagliare se vai per tentativi.

Questo riferimento copre ogni parte della sintassi cron con esempi pratici pronti da copiare e incollare. Se vuoi costruire e validare espressioni in modo interattivo, apri il Costruttore di Espressioni Cron accanto a questa guida.

Sintassi Cron: I cinque campi

Un'espressione cron standard รจ composta da cinque campi separati da spazi:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ minuto (0โ€“59)
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ora (0โ€“23)
โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ giorno del mese (1โ€“31)
โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ mese (1โ€“12)
โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ giorno della settimana (0โ€“7, dove 0 e 7 = Domenica)
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
* * * * *

Ogni campo accetta un valore specifico, un intervallo, una lista o un carattere jolly. Insieme, i cinque campi specificano una pianificazione ricorrente esatta.

CampoValori consentitiCaratteri speciali
Minuto0โ€“59* , - /
Ora0โ€“23* , - /
Giorno del mese1โ€“31* , - /
Mese1โ€“12* , - /
Giorno della settimana0โ€“7* , - /

I campi mese e giorno della settimana accettano anche abbreviazioni di tre lettere (JANโ€“DEC, SUNโ€“SAT) nella maggior parte delle implementazioni.

Caratteri speciali spiegati

Comprendere quattro caratteri speciali sblocca tutta la potenza di cron:

Asterisco * โ€” "Ogni"

Corrisponde a ogni valore possibile per quel campo.

* * * * *    # Ogni minuto di ogni ora di ogni giorno

Virgola , โ€” "E"

Specifica una lista di valori discreti.

0 9,12,18 * * *    # Alle 9:00, 12:00 e 18:00 ogni giorno

Trattino - โ€” "Fino a"

Definisce un intervallo inclusivo.

0 9-17 * * *    # Ogni ora dalle 9 alle 17

Barra / โ€” "Ogni n-esimo"

Imposta un intervallo di passo dall'inizio dell'intervallo.

*/10 * * * *    # Ogni 10 minuti (0, 10, 20, 30, 40, 50)

Puoi combinare un intervallo con un passo:

0 9-17/2 * * *    # Ogni 2 ore dalle 9 alle 17 (9, 11, 13, 15, 17)

Esempi comuni di pianificazione Cron

Salva questa tabella nei preferiti. Queste sono le pianificazioni che userai piรน e piรน volte.

PianificazioneEspressioneSpiegazione
Ogni minuto* * * * *Si esegue all'inizio di ogni minuto
Ogni 5 minuti*/5 * * * *Minuti 0, 5, 10, 15, โ€ฆ, 55
Ogni 15 minuti*/15 * * * *Minuti 0, 15, 30, 45
Ogni ora0 * * * *Al minuto 0 di ogni ora
Ogni 6 ore0 */6 * * *Alle 00:00, 06:00, 12:00, 18:00
Ogni giorno a mezzanotte0 0 * * *Una volta al giorno alle 00:00
Ogni giorno alle 30 3 * * *Una volta al giorno alle 03:00
Ogni lunedรฌ alle 90 9 * * 1Settimanale il lunedรฌ alle 09:00
Ogni giorno feriale alle 80 8 * * 1-5Da lunedรฌ a venerdรฌ alle 08:00
Ogni fine settimana a mezzogiorno0 12 * * 0,6Sabato e domenica alle 12:00
Primo di ogni mese0 0 1 * *Mezzanotte il 1ยฐ di ogni mese
Ogni trimestre (Gen, Apr, Lug, Ott)0 0 1 1,4,7,10 *Mezzanotte il 1ยฐ dei mesi trimestrali
Ogni 15 min in orario lavorativo*/15 9-17 * * 1-5Giorni feriali, 9โ€“17, ogni 15 minuti

Incolla qualsiasi espressione nel Costruttore di Espressioni Cron per visualizzare i prossimi momenti di esecuzione.

Pattern avanzati

Combinare liste e intervalli

I campi accettano sintassi mista. Per eseguire un job alle 8 e alle 18 nei giorni feriali:

0 8,18 * * 1-5

Per puntare a mesi specifici con un passo:

0 0 1 1-12/3 *    # Ogni 3 mesi a partire da gennaio (Gen, Apr, Lug, Ott)

Giorno del mese vs. Giorno della settimana

Quando sia il giorno del mese che il giorno della settimana sono impostati (non *), il comportamento dipende dall'implementazione. Nel cron standard, il job si esegue se una delle due condizioni รจ soddisfatta โ€” รจ una relazione OR, non AND. Questo sorprende molte persone.

0 0 15 * 1    # Si esegue il 15 E ogni lunedรฌ โ€” non "il lunedรฌ 15"

Esecuzione all'avvio

Pur non essendo un'espressione cron in senso stretto, @reboot รจ una scorciatoia ampiamente supportata:

@reboot /usr/local/bin/start-service.sh

Altre scorciatoie comuni:

ScorciatoiaEquivalente
@yearly0 0 1 1 *
@monthly0 0 1 * *
@weekly0 0 * * 0
@daily0 0 * * *
@hourly0 * * * *

Cron in diversi ambienti

La sintassi a cinque campi รจ universale, ma come si configura cron varia in base alla piattaforma.

Crontab Linux

Il classico. Modifica il tuo crontab utente con crontab -e:

# Esegui backup ogni giorno alle 2
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

I job cron di sistema in /etc/cron.d/ includono un campo utente aggiuntivo:

0 2 * * * root /usr/local/bin/cleanup.sh

GitHub Actions

GitHub Actions usa la stessa sintassi a cinque campi in un trigger schedule. Tutti gli orari sono in UTC.

on:
  schedule:
    - cron: '0 3 * * 1-5'   # Giorni feriali alle 3 UTC

Per un approfondimento sulla configurazione YAML, consulta YAML per Kubernetes e YAML per Docker Compose.

Kubernetes CronJob

Kubernetes incapsula le espressioni cron in una risorsa CronJob:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: nightly-report
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: report
              image: reporting:latest
              command: ["python", "generate_report.py"]
          restartPolicy: OnFailure

Kubernetes usa UTC per impostazione predefinita. A partire dalla v1.25, puoi impostare timeZone: "America/New_York" nella specifica del CronJob.

AWS CloudWatch (EventBridge)

AWS usa una sintassi leggermente diversa con sei campi (aggiungendo i secondi) e i wrapper rate() / cron():

cron(0 3 * * ? *)    # Ogni giorno alle 3 UTC

Nota il carattere ? โ€” AWS lo richiede per il giorno del mese o il giorno della settimana quando l'altro รจ specificato. Questo รจ diverso dal cron standard.

Errori comuni

1. Confusione sui fusi orari

Cron usa il fuso orario del sistema su Linux, ma Kubernetes e GitHub Actions funzionano in UTC. Un job pianificato per 0 9 * * * si attiverร  alle 9 UTC, che corrisponde alle 10 ora italiana.

Verifica sempre quale fuso orario usa il tuo scheduler. Per le conversioni di timestamp, la nostra guida Timestamp Unix spiegato copre gli offset UTC in dettaglio.

2. Esecuzioni sovrapposte

Se un job impiega piรน tempo dell'intervallo tra le esecuzioni, otterrai istanze sovrapposte. Uno script che gira per 8 minuti con una pianificazione */5 * * * * si accumulerร .

Soluzioni:

  • Usa un file di blocco (flock su Linux)
  • Imposta concurrencyPolicy: Forbid nei CronJob di Kubernetes
  • Controlla le istanze in esecuzione all'inizio del tuo script

3. Output mancante e debug

Cron non cattura stdout per impostazione predefinita. Reindirizza sempre l'output:

*/5 * * * * /path/to/script.sh >> /var/log/myjob.log 2>&1

Se un job cron non si esegue, controlla:

  • grep CRON /var/log/syslog per i log di esecuzione
  • I permessi del file dello script
  • La variabile d'ambiente PATH โ€” cron ha un PATH minimale per impostazione predefinita

4. La trappola del "31 di ogni mese"

0 0 31 * *    # Si esegue solo nei mesi con 31 giorni

Questo si esegue a gennaio, marzo, maggio, luglio, agosto, ottobre e dicembre โ€” ma salta silenziosamente gli altri cinque mesi. Se hai bisogno di un job di fine mese, considera di eseguirlo il 1ยฐ e adattare la logica del tuo script, o usa uno strumento che supporti la semantica "ultimo giorno del mese".

5. Dimenticare il ritorno a capo alla fine del crontab

Alcune implementazioni di cron richiedono un ritorno a capo alla fine del file crontab. Se la tua ultima voce non si esegue, aggiungi una riga vuota alla fine.

Costruire espressioni visivamente

Memorizzare la sintassi funziona per i pattern comuni, ma le pianificazioni complesse sono piรน facili da costruire visivamente. Il Costruttore di Espressioni Cron su alltools.one ti permette di:

  • Selezionare valori per ogni campo tramite menu a tendina
  • Vedere una descrizione leggibile della pianificazione
  • Visualizzare in anteprima i prossimi momenti di esecuzione
  • Copiare l'espressione finale con un clic

Funziona interamente nel tuo browser โ€” nessun dato viene inviato a un server.

Scheda di riferimento rapido

Copia questo blocco nella documentazione del tuo progetto o nel wiki del team:

# โ”Œโ”€โ”€โ”€โ”€โ”€ min (0-59)
# โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€ ora (0-23)
# โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€ giorno del mese (1-31)
# โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€ mese (1-12)
# โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€ giorno della settimana (0-7, Dom=0 o 7)
# โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
# * * * * *

*/5 * * * *        # Ogni 5 minuti
0 * * * *          # Ogni ora
0 0 * * *          # Ogni giorno a mezzanotte
0 9 * * 1-5        # Giorni feriali alle 9
0 0 1 * *          # Primo del mese
*/15 9-17 * * 1-5  # Ogni 15 min, orario lavorativo

Letture aggiuntive


Pronto a costruire la tua prossima espressione cron? Apri il Costruttore di Espressioni Cron e imposta la tua pianificazione correttamente al primo tentativo.

Published on 2026-02-25
Cron Expression Cheat Sheet โ€” Schedule Like a Pro | alltools.one