Sintaxa expresiilor cron
O expresie cron este cinci câmpuri care descriu când ceva ar trebui să se execute. Fiecare câmp spune care valori ale unității sale sunt acceptabile, iar jobul se declanșează la fiecare minut în care toți cinci sunt de acord. Acesta este modelul complet: nu există noțiune de durată, nu există "la fiecare 90 de minute" și nu se păstrează nicăieri o stare de următoare execuție.
Câmpurile sunt citite de la stânga la dreapta ca minut, oră, ziua lunii, luna, ziua săptămânii. Exemplele de mai jos sunt cele pe care oamenii cu adevărat le ating, și fiecare este parsată de parserul cron al acestui site însuși înainte ca această pagină să fie construită.
Secțiunea finală listează sintaxa care arată ca cron dar nu este acceptată aici: extensii Quartz și Jenkins, și forma cu șase câmpuri cu secunde. Merită să le recunoașteți, pentru că o expresie copiată care folosește una va eșua pur și simplu.
Cinci câmpuri
7O linie cron constă din cinci câmpuri separate prin spații, apoi comanda. Fiecare câmp trebuie să fie prezent; nu există nicio modalitate de a omite unu.
| Expresie | Interval | Semnificație |
|---|---|---|
| * * * * * | min hod dom mes dow | Cinci câmpuri în ordine: minut, oră, ziua lunii, luna, ziua săptămâniiCinci asteriscuri înseamnă fiecare minut din fiecare zi — expresia cea mai relaxată. |
| minute | 0-59 | Primul câmp |
| hour | 0-23 | Al doilea câmp, pe o ceas de 24 de ore |
| day of month | 1-31 | Al treilea câmpO zi care nu există într-o lună dată este pur și simplu omisă — 31 se execută de șapte ori pe an, nu de doisprezece. |
| month | 1-12 | Al patrulea câmp |
| day of week | 0-7 | Al cincilea câmp, duminică pe primulAtât 0 cât și 7 înseamnă duminică, motiv pentru care intervalul merge la șapte mai degrabă decât la șase. |
| 0 5 13 * 5 | Când ambele câmpuri de zi sunt restricționate, cron se execută pe oricare dintre ele — nu pe amândoiAceasta se execută pe 13 și pe fiecare vineri, deci nu este "vineri 13". Este singura regulă din cron care surprinde pe toată lumea. |
Operatori
10Aceiași patru operatori funcționează în fiecare câmp; se schimbă doar numerele pe care le acceptă.
| Expresie | Interval | Semnificație |
|---|---|---|
| * | Fiecare valoare pe care o permite câmpul | |
| 1,15,30 | O listă de valori individuale | |
| 9-17 | Un interval inclusiv | |
| */15 | Fiecare valoare de n pe tot câmpul*/15 în câmpul minut înseamnă :00, :15, :30 și :45 — se numără de la sfârșitul intervalului, nu de la acum. | |
| 9-17/2 | Fiecare valoare de n din interiorul unui interval | |
| 5/10 | Fiecare valoare de n de la un punct de start la sfârșitul câmpului | |
| 0,30 9-17 * * 1-5 | Operatorii se combină liber, în orice câmpÎn jumătate și sfertul de oră, între nouă și cinci, luni prin vineri. | |
| JAN-DEC | 1-12 | Nazuri lunilor, trei litere, insensibil la caz |
| SUN-SAT | 0-6 | Nazuri zilelor, trei litere, insensibil la caz |
| 7 | 0 | Duminică, scrisă pe cealaltă cale |
Macrocomenzile prescurtate
7Șapte nazuri care stau în locul unei expresii complete. Sunt o comoditate a formatului crontab mai degrabă decât a gramaticii câmpului, deci un planificator care citește stringurile cron nu le trebuie neapărat să le accepte.
| Expresie | Interval | Semnificație |
|---|---|---|
| @hourly | 0 * * * * | La vârful fiecărei ore |
| @daily | 0 0 * * * | O dată pe zi la miezul nopții |
| @midnight | 0 0 * * * | Același ca @daily |
| @weekly | 0 0 * * 0 | O dată pe săptămână, duminică la miezul nopții |
| @monthly | 0 0 1 * * | Întâiul din lună la miezul nopții |
| @yearly | 0 0 1 1 * | Întâiul ianuarie la miezul nopții |
| @annually | 0 0 1 1 * | Același ca @yearly |
Exemple lucrate
14Citiți unu de la dreapta la stânga atunci când se termină să facă sens: câmpul cel mai grosolan este pe dreapta și decide care zile chiar primesc câmpurile mai fine consultate.
| Expresie | Interval | Semnificație |
|---|---|---|
| * * * * * | Fiecare minut | |
| */5 * * * * | La fiecare cinci minute | |
| 0 * * * * | Fiecare oră, pe ora | |
| 0,30 * * * * | La fiecare jumătate de oră | |
| 0 3 * * * | În fiecare zi la 03:00 | |
| 0 9,17 * * * | De două ori pe zi, la 09:00 și 17:00 | |
| */15 9-17 * * 1-5 | La fiecare sfert de oră în orele de lucru zilele de lucru | |
| 0 8 * * 1-5 | Zilele de lucru la 08:00 | |
| 0 10 * * 6,0 | Sâmbăți și duminici la 10:00 | |
| 30 7 * * MON | Lunea la 07:30 | |
| 0 0 1 * * | Miezul nopții pe prima din fiecare lună | |
| 0 0 28-31 * * | Fiecare zi în partea finală a luniiCron standard nu cunoaște "ziua finală a lunii". Aceasta se execută până la patru ori; o soluție obișnuită este un script care verifică data și iese devreme. | |
| 0 0 1 1,4,7,10 * | Miezul nopții pe prima din fiecare trimestru | |
| 0 0 1 1 * | O dată pe an, la începutul lunii ianuarie 1 |
Extensii care acest site nu acceptă
6Quartz, Jenkins și unii planificatori cloud adaugă aceste. Sunt listate pentru a le recunoaște în crontab-ul altcuiva — parserul de pe acest site respinge fiecare unu, la fel ca cron livrat cu Linux.
| Expresie | Interval | Semnificație |
|---|---|---|
| ? | "Nicio valoare specifică", în câmpul de zi pe care celălalt îl restricționează deja | |
| L | Ziua finală a lunii, sau ziua finală dată în săptămână | |
| 15W | Ziua de lucru cea mai apropiată de 15 | |
| FRI#3 | Al treilea vineri din lună | |
| */30 * * * * * | Un al șaselea câmp pentru secunde, în fațăȘase câmpuri, nu cinci. Quartz și mai multe biblioteci la nivel limbaj folosesc acest form; fișierul crontab nu. | |
| @reboot | Execută o dată la pornirea mașiniiReal în crontab, dar nu este un program — nu există o următoare execuție pentru a calcula, motiv pentru care parserul de aici o refuză. |