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.
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 cron2 · 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 AND3 · 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×/oraCosa 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.
*/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
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.
I simboli, decodificati
cosa significa ognuno0 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.
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.
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.
Continua a esplorare
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.