Utilia

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.

Veidotājs

LauksRežīmsVērtība
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

Kā izveidot cron izteiksmi

  1. Ierakstiet vai ielīmējiet izteiksmi laukā Cron izteiksme vai izvēlieties to sadaļā Sagataves. Tiek pieņemti arī makro, piemēram, @daily vai @weekly.
  2. 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.
  3. Atzīmējiet Pievienot sekunžu lauku (6 lauki), ja jūsu plānotājs atbalsta sekundes.
  4. 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.
  5. 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.