Generator de expresii cron
Construiește o expresie cron câmp cu câmp, citește-o pe înțelesul tuturor, vezi următoarele rulări în orice fus orar și convertește-o în systemd sau AWS.
Pe înțelesul tuturor
Sunt setate atât ziua lunii, cât și ziua săptămânii: cron-ul clasic rulează când se potrivește UNA dintre ele (nu amândouă).
Constructor
| Câmp | Mod | Valoare |
|---|---|---|
| Secundă0–59 | ||
| Minut0–59 | ||
| Oră0–23 | ||
| Ziua lunii1–31, L | ||
| Luna1–12 sau JAN–DEC | ||
| Ziua săptămânii0–7 (0 și 7 = duminică) sau SUN–SAT |
Următoarele rulări
Alte formate
- linie crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Cum construiești o expresie cron
- Scrie sau lipește o expresie în Expresie cron sau alege una din Presetări. Macrourile precum
@dailysau@weeklysunt acceptate și ele. - Sau folosește Constructorul: pentru fiecare câmp alege un Mod (Fiecare, La fiecare N, Valori specifice, Interval sau Personalizat) și completează Valoare. Expresia se actualizează pe parcurs, iar modificarea expresiei actualizează constructorul.
- Bifează Adaugă un câmp pentru secunde (6 câmpuri) dacă planificatorul tău acceptă secunde.
- Citește orarul Pe înțelesul tuturor (în limba paginii, când biblioteca de descriere o acceptă; altfel în engleză), apoi verifică lista Următoarele rulări. Alege Fus orar al serverului care rulează sarcina și Câte rulări să fie afișate.
- Copiază expresia cu Copiază sau folosește unul dintre Alte formate.
Erorile sunt explicate câmp cu câmp, de exemplu „Minut: 61 este în afara intervalului (0–59)”, așa că știi exact ce trebuie corectat.
Cele cinci câmpuri cron
O linie cron standard (Vixie) are cinci câmpuri, apoi comanda:
| Câmp | Valori permise |
|---|---|
| Minut | 0–59 |
| Oră | 0–23 |
| Ziua lunii | 1–31 |
| Luna | 1–12 sau JAN–DEC |
| Ziua săptămânii | 0–7 (0 și 7 sunt duminică) sau SUN–SAT |
Fiecare câmp acceptă * (orice valoare), o listă 1,15, un interval 9-17, un pas */15 (la fiecare 15 unități) sau un interval cu pas 0-30/10. Astfel, */15 9-17 * * 1-5 înseamnă la fiecare 15 minute, de la 9:00 la 17:45, de luni până vineri.
O regulă îi surprinde pe mulți: când sunt restricționate atât Ziua lunii, cât și Ziua săptămânii, cron-ul clasic rulează când se potrivește oricare dintre ele. 0 0 13 * 5 rulează în fiecare zi de 13 și în fiecare vineri, nu doar vinerea 13. În acest caz, instrumentul afișează un avertisment.
Orele următoarelor rulări și fusurile orare
Cron folosește ceasul mașinii sau setarea CRON_TZ/TZ din crontab. Lista Următoarele rulări se calculează pentru fusul orar ales, inclusiv schimbările de oră de vară/iarnă: la trecerea de primăvară o sarcină setată la 2:30 poate fi sărită, iar toamna poate rula o dată sau de două ori, în funcție de implementare. Pentru sarcini care trebuie să ruleze exact o dată, preferă ore în afara intervalului 1:00–3:00 sau folosește UTC.
Vixie cron, temporizatoare systemd, Quartz și AWS
- Temporizatoarele systemd folosesc
OnCalendar=cu o sintaxă diferită:Mon..Fri *-*-* 09..17:00/15:00. Condițiile pentru zilele săptămânii și pentru dată se combină cu ȘI, nu cu SAU, așa că unele expresii cron nu au echivalent exact. - Quartz și Spring pun un câmp pentru secunde pe primul loc și pot adăuga un câmp pentru an. Unul dintre cele două câmpuri pentru zi trebuie să fie
?, iar Quartz numerotează zilele săptămânii de la 1 la 7, începând cu duminica, spre deosebire de 0–6 din cron. Instrumentul scrie zilele săptămânii ca nume (MON-FRI) pentru a evita această capcană. - AWS EventBridge folosește
cron(minute ore zi lună zi-săptămână an): șase câmpuri, fără secunde, cu?într-unul dintre câmpurile de zi și cu anul la sfârșit.
Cron-ul standard nu are câmp pentru secunde. Forma cu 6 câmpuri, cu secunde, este acceptată de multe biblioteci (node-cron, Spring, Quartz), dar nu de crontab-ul sistemului.
Întrebări frecvente
Cum rulez o sarcină la fiecare 5 minute?
Folosește */5 * * * *. Sarcina rulează la minutele 0, 5, 10… ale fiecărei ore.
Cum rulez o sarcină în ultima zi a lunii?
Multe planificatoare acceptă L în câmpul zilei lunii: 0 18 L * *. Cu Vixie cron simplu, rulează zilnic în zilele 28–31 și verifică în script dacă mâine este 1.
Ce face @reboot?
Rulează comanda o singură dată, la pornirea daemonului cron. Nu are orar, deci instrumentul nu poate afișa orele de rulare pentru el.
De ce sarcina mea nu rulează la ora afișată?
Verifică fusul orar al serverului, crontab-ul utilizatorului față de /etc/crontab (care are un câmp suplimentar pentru utilizator) și PATH: cron pornește cu un mediu minimal.
Duminica este 0 sau 7?
Ambele. În câmpul zilei săptămânii, 0 și 7 înseamnă duminică, 1 este luni, iar 6 este sâmbătă.
Instrumente similare
- Convertor timestamp Unix Convertește timestamp-uri Unix în secunde sau milisecunde în date lizibile în ora locală, UTC și ISO 8601 și transformă orice dată înapoi în timp epoch.
- Convertor de fus orar între orașe Convertește o dată și o oră dintr-un fus orar în mai multe altele deodată, cu ora de vară gestionată automat. Caută orice fus orar IANA sau oraș.
- Calculator chmod Convertește permisiunile Unix între căsuțe, notația octală (755) și cea simbolică (rwxr-xr-x), cu setuid, setgid, sticky bit și comenzi chmod gata de folosit.