Vai al contenuto

Traduttore di espressioni cron:
cosa fa questa riga?

Incolla una riga presa direttamente dal crontab — i cinque campi da soli, oppure la riga intera con il comando. Ottieni la pianificazione in una frase in italiano, ogni campo decodificato e le prossime dieci date in cui scatta. Non viene inviato nulla: l'analisi avviene nel tuo browser.

Da dove iniziare

Leggi i campi in quest'ordine

Le righe di crontab ereditate raramente sono documentate. Leggi i cinque campi in quest'ordine:

1 · Conta i campi

Cinque campi separati da spazi è crontab. Sei o sette campi indicano Quartz o un altro scheduler che parte dai secondi — un linguaggio diverso che per caso assomiglia al primo. Tutto ciò che segue il quinto campo è il comando, non la pianificazione.

5 = cron · 6+ = non cron

2 · Leggi prima gli ultimi due

Giorno del mese e giorno della settimana decidono in quali giorni. Se entrambi contengono numeri, fermati subito: il cron scatta quando uno qualsiasi dei due combacia — la regola dell'OR, l'errore di lettura più classico.

entrambi impostati → OR, non AND

3 · Poi i primi due

Minuto e ora indicano a che ora, in quei giorni. Un asterisco nel campo minuti significa 60 esecuzioni all'ora. Il campo mese conta solo quando non è un asterisco.

* nei minuti = 60×/ora
Esempio pratico

Cosa fa ogni riga in questo crontab

L'output di crontab -l su un server che non conosci, tradotto riga per riga. Traduci una qualsiasi di queste righe — il pulsante la carica nel lettore qui sopra. Funzionano anche le righe intere: incolla comando e pianificazione insieme nella barra in alto, e il lettore prende la pianificazione e indica la parte che ha ignorato.

# m h dom mon dow command
*/5 * * * *   /usr/local/bin/health-ping.sh
30 3 * * *    /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
0 9 * * 1-5   /usr/local/bin/daily-digest.sh
0 6 1 * *     /usr/local/bin/invoice-run.sh
*/5 * * * *un ping di controllo ogni 5 minuti, 24 ore su 24 — 288 esecuzioni al giorno
30 3 * * *il backup notturno alle 03:30 — nota che è l'unica riga il cui output finisce in un log
0 9 * * 1-5il digest alle 09:00, solo nei giorni feriali — 1-5 nell'ultimo campo significa lunedì–venerdì
0 6 1 * *la fatturazione il 1° del mese alle 06:00 — un 1 nel campo centrale è una data, non un giorno della settimana
Chiave di lettura

Come leggere ogni simbolo del cron

Ogni simbolo è una forma abbreviata, e decodificarla male è il modo in cui una pianificazione viene fraintesa in revisione:

  • Gli step si contano dal minimo del campo. */6 nel campo ore è 00, 06, 12, 18 — non «sei ore dopo l'ultima esecuzione, qualunque fosse».
  • I numeri in entrambi i campi giorno significano OR, non AND. Il cron scatta quando uno qualsiasi dei due combacia, quindi la pianificazione è più ampia di quanto sembri.
  • Nomi e nickname sono un dialetto. MON e @daily funzionano qui e nella maggior parte dei cron — i numeri sono la sintassi che ogni cron accetta.
Guarda la regola dell'OR in azione

I simboli, decodificati

cosa significa ognuno
*qualsiasi valore — nel campo minuti, significa 60 esecuzioni all'oratutti i valori
*/6ogni 6° valore, contato dal minimo del campouno step
9-17un intervallo, con entrambi gli estremi inclusiun intervallo
1,15esattamente questi valori, nient'altroun elenco
MON · JANnomi di 3 lettere che alcuni cron accettano — questa pagina li legge, ma i numeri sono più portabililetto qui
@dailyun nickname per 0 0 * * * — esteso qui per farti vedere cosa nascondeesteso
L # ? WQuartz (Jenkins, Spring) — un crontab rifiuta l'intera riganon cron
Forma canonica

0 0 * * 0, @weekly e SUN

Le quattro righe qui sotto indicano tutte domenica a mezzanotte. Il traduttore le legge tutte come la stessa frase e produce lo stesso elenco delle prossime esecuzioni.

Numeri — la sintassi che ogni cron accetta0 0 * * 0
Il nickname@weekly
Il nome del giorno0 0 * * SUN
7 significa anche domenica0 0 * * 7
Dalla libreria

Espressioni cron di uso quotidiano

Ognuna è già decodificata e rimanda alla sua pagina completa — prossime esecuzioni, varianti e la riga crontab pronta da copiare. L'elenco completo si trova nella libreria di esempi cron.

Cron job ogni minuto* * * * *
Cron job ogni 5 minuti*/5 * * * *
Cron job ogni 15 minuti*/15 * * * *
Cron job ogni 30 minuti*/30 * * * *
Cron job ogni ora0 * * * *
Cron job ogni 6 ore0 */6 * * *
Cron job ogni giorno a mezzanotte0 0 * * *
Cron job nei giorni feriali0 0 * * 1-5
Cron job ogni domenica0 0 * * 0
Cron job mensile0 0 1 * *
Cron job ogni trimestre0 0 1 */3 *
Cron job annuale0 0 1 1 *
Domande frequenti

Le espressioni cron più incollate qui

Ogni minuto di ogni ora, ogni giorno — 1.440 esecuzioni al giorno, 525.600 all'anno. Tutti e cinque i campi sono asterischi, quindi non c'è alcuna restrizione. È la pianificazione giusta per un ping di controllo leggero, sbagliata per quasi tutto il resto. Se la trovi ereditata davanti a uno script costoso, è la prima riga da mettere in discussione.

Ogni 5° valore di quel campo, contato dal suo minimo. Nel campo minuti, */5 scatta a :00, :05, :10 … :55 — 12 volte all'ora, sui minuti tondi. Non significa «5 minuti dopo l'ultima esecuzione»: il cron confronta valori dell'orologio, non intervalli. Quindi */7 dà :00, :07 … :56 e poi di nuovo :00 — un salto di 4 minuti a ogni inizio d'ora.

Ogni giorno a mezzanotte, ora del server — minuto 0 dell'ora 0, qualsiasi data, qualsiasi mese, qualsiasi giorno della settimana. È esattamente la pianificazione che @daily abbrevia. La «mezzanotte» è quella del server, e nelle notti di cambio ora legale un server in ora locale può saltarla o ripeterla.

Identici. I nickname corrispondono esattamente: @hourly = 0 * * * *, @daily e @midnight = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. L'eccezione è @reboot — non è affatto una pianificazione, scatta quando parte il demone cron. Questo traduttore espande i nickname così vedi sempre i cinque campi che ci sono sotto.

Perché non viene da un crontab. Quartz (Jenkins, Spring), alcuni scheduler cloud e qualche libreria cron mettono un campo secondi all'inizio, portando il totale a sei — o sette con un anno finale. Un crontab non la installa. Se il campo secondi è 0, eliminalo: i restanti cinque campi di solito si leggono come POSIX. Se è qualsiasi altro valore, la pianificazione scatta a intervalli sotto il minuto, cosa che il cron classico non può esprimere.

È la sintassi Quartz per «nessun valore specifico». Quartz richiede che esattamente uno dei due campi giorno resti neutro, e a quello va il punto interrogativo. Il cron POSIX non ha questa regola né il ? — basta un normale *. Quando entrambi i campi giorno sono impostati, il cron gira sull'unione dei due. Incolla un ? in un crontab e la riga viene rifiutata.

Sì. Incolla 30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 e il lettore prende i cinque campi della pianificazione, li traduce e indica il resto della riga come la parte che ha ignorato. Riconosce anche il formato di /etc/crontab, dove tra pianificazione e comando c'è un nome utente. Quello che non fa è indovinare una riga a sei campi: un campo secondi iniziale è Quartz, non crontab, ed è un linguaggio diverso.

Incolla l'espressione qui sopra. La vista dei risultati elenca le prossime dieci esecuzioni come date concrete, calcolate da un parser reale nel fuso orario del tuo browser. Il crontab, però, gira sull'orologio del server: se la macchina usa UTC e tu no, l'intero elenco si sposta del tuo scarto. Nulla ti dice però che un'esecuzione sia riuscita — il cron registra solo che è partita.

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.

30 giorni gratis senza carta di credito cancellabile in qualsiasi momento piano gratuito dopo la prova
Oltre 100.000 siti monitorati · Conforme al GDPR