Cron izteiksmju veidotājs
Veidojiet cron izteiksmi pa laukiem, izlasiet to vienkāršiem vārdiem, apskatiet nākamās izpildes jebkurā laika joslā un pārveidojiet uz systemd, Quartz vai AWS.
Vienkāršiem vārdiem
Ir iestatīta gan mēneša diena, gan nedēļas diena: klasiskais cron darbojas, kad atbilst VIENS NO TIEM (nevis abi).
Veidotājs
| Lauks | Režīms | Vērtība |
|---|---|---|
| Sekunde0–59 | ||
| Minūte0–59 | ||
| Stunda0–23 | ||
| Mēneša diena1–31, L | ||
| Mēnesis1–12 vai JAN–DEC | ||
| Nedēļas diena0–7 (0 un 7 = svētdiena) vai SUN–SAT |
Nākamās izpildes
Citi formāti
- crontab rinda
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Kā izveidot cron izteiksmi
- Ierakstiet vai ielīmējiet izteiksmi laukā Cron izteiksme vai izvēlieties to sadaļā Sagataves. Tiek pieņemti arī makro, piemēram,
@dailyvai@weekly. - Vai izmantojiet Veidotājs: katram laukam izvēlieties Režīms (Katru, Ik pēc N, Konkrētas vērtības, Diapazons vai Pielāgots) un aizpildiet Vērtība. Izteiksme atjaunojas līdz ar jūsu darbībām, un izteiksmes rediģēšana atjaunina veidotāju.
- Atzīmējiet Pievienot sekunžu lauku (6 lauki), ja jūsu plānotājs atbalsta sekundes.
- Izlasiet grafiku sadaļā Vienkāršiem vārdiem (šajā valodā apraksts ir angļu valodā) un tad pārbaudiet sarakstu Nākamās izpildes. Izvēlieties servera, kas izpilda darbu, Laika josla un norādiet, Cik izpilžu uzskaitīt.
- Nokopējiet izteiksmi ar Kopēt vai izmantojiet kādu no Citi formāti.
Kļūdas tiek paskaidrotas pa laukiem, piemēram, „Minūte: 61 ir ārpus diapazona (0–59)“, tāpēc precīzi zināt, ko labot.
Grafika apraksts ir angļu valodā. Nākamo izpildes datumu un laiku formatē pēc lapas valodas.
Pieci cron lauki
Standarta (Vixie) cron rindai ir pieci lauki, tad komanda:
| Lauks | Atļautās vērtības |
|---|---|
| Minūte | 0–59 |
| Stunda | 0–23 |
| Mēneša diena | 1–31 |
| Mēnesis | 1–12 vai JAN–DEC |
| Nedēļas diena | 0–7 (0 un 7 ir svētdiena) vai SUN–SAT |
Katrs lauks pieņem * (katra vērtība), sarakstu 1,15, diapazonu 9-17, soli */15 (ik pēc 15 vienībām) vai diapazonu ar soli 0-30/10. Tātad */15 9-17 * * 1-5 nozīmē ik pēc 15 minūtēm no 9:00 līdz 17:45, no pirmdienas līdz piektdienai.
Viens noteikums daudziem sagādā pārsteigumu: ja ierobežoti gan Mēneša diena, gan Nedēļas diena, klasiskais cron darbojas, kad atbilst kāds no tiem. 0 0 13 * 5 tiek izpildīts katru 13. datumu un katru piektdienu, ne tikai piektdienā, 13. datumā. Šādā gadījumā rīks parāda brīdinājumu.
Nākamo izpildes laiki un laika joslas
Cron izmanto mašīnas pulksteni vai crontab iestatījumu CRON_TZ/TZ. Saraksts Nākamās izpildes tiek aprēķināts jūsu izvēlētajai laika joslai, ņemot vērā vasaras un ziemas laika maiņu: pavasara maiņas laikā darbs, kas iestatīts uz 2:30, var tikt izlaists, bet rudenī tas var tikt izpildīts vienreiz vai divreiz atkarībā no implementācijas. Darbiem, kuriem jāizpildās tieši vienreiz, dodiet priekšroku laikiem ārpus 1:00–3:00 vai izmantojiet UTC.
Vixie cron, systemd taimeri, Quartz un AWS
- systemd taimeri izmanto
OnCalendar=ar citu sintaksi:Mon..Fri *-*-* 09..17:00/15:00. Nedēļas dienas un datuma nosacījumi tiek apvienoti ar UN, nevis VAI, tāpēc dažām cron izteiksmēm nav precīza ekvivalenta. - Quartz un Spring pirmo liek sekunžu lauku un var pievienot gada lauku. Vienam no diviem dienu laukiem jābūt
?, un Quartz numurē nedēļas dienas no 1 līdz 7, sākot ar svētdienu, atšķirībā no cron 0–6. Rīks nedēļas dienas raksta kā nosaukumus (MON-FRI), lai izvairītos no šīs lamatas. - AWS EventBridge izmanto
cron(minutes hours day month weekday year): seši lauki, bez sekundēm,?vienā dienu laukā un gads beigās.
Standarta cron nav sekunžu lauka. 6 lauku formu ar sekundēm atbalsta daudzas bibliotēkas (node-cron, Spring, Quartz), bet ne sistēmas crontab.
Biežāk uzdotie jautājumi
Kā palaist darbu ik pēc 5 minūtēm?
Izmantojiet */5 * * * *. Darbs tiek izpildīts katras stundas 0., 5., 10. minūtē un tā tālāk.
Kā palaist darbu mēneša pēdējā dienā?
Daudzi plānotāji mēneša dienas laukā pieņem L: 0 18 L * *. Ar parasto Vixie cron palaidiet darbu katru dienu 28.–31. datumā un skriptā pārbaudiet, vai rīt ir 1. datums.
Ko dara @reboot?
Tas izpilda komandu vienreiz, kad startē cron dēmons. Tam nav grafika, tāpēc rīks nevar uzskaitīt tā izpildes laikus.
Kāpēc mans darbs netiek izpildīts parādītajā laikā?
Pārbaudiet servera laika joslu, lietotāja crontab pret /etc/crontab (kurā ir papildu lietotāja lauks) un PATH: cron startē ar minimālu vidi.
Vai svētdiena ir 0 vai 7?
Abi. Nedēļas dienas laukā 0 un 7 nozīmē svētdienu, 1 ir pirmdiena un 6 ir sestdiena.
Saistītie rīki
- Unix laika zīmoga pārveidotājs Pārveidojiet Unix laika zīmogus sekundēs vai milisekundēs lasāmos datumos vietējā laikā, UTC un ISO 8601 un pārvērtiet jebkuru datumu atpakaļ epoch laikā.
- Laika joslu pārveidotājs Pārveidojiet datumu un laiku no vienas laika joslas uz vairākām citām vienlaikus, ar vasaras laiku. Meklējiet jebkuru IANA joslu vai pilsētu.
- Chmod kalkulators Pārveidojiet Unix failu atļaujas starp rūtiņām, oktālo (755) un simbolisko (rwxr-xr-x) pierakstu, ar setuid, setgid, sticky bitu un chmod komandām.