Utilia

Cron-segð smiður

Smíðaðu cron-segð reit fyrir reit, sjáðu næstu keyrslutíma í hvaða tímabelti sem er og umbreyttu henni í systemd-, Quartz- eða AWS-snið.

Smiður

ReiturHamurGildi
Mínúta0–59
Klukkustund0–23
Dagur mánaðar1–31, L
Mánuður1–12 eða JAN–DEC
Vikudagur0–7 (0 og 7 = sunnudagur) eða SUN–SAT

Hvernig á að smíða cron-segð

  1. Sláðu inn eða límdu segð í Cron-segð, eða veldu eina úr Forstillingar. Skammstafanir eins og @daily eða @weekly eru líka samþykktar.
  2. Eða notaðu Smiður: fyrir hvern reit velurðu Hamur (Hverja, Á N fresti, Tiltekin gildi, Bil eða Sérsniðið) og fyllir út Gildi. Segðin uppfærist jafnóðum og ef þú breytir segðinni uppfærist smiðurinn.
  3. Hakaðu við Bæta við sekúndureit (6 reitir) ef tímaáætlunarforritið þitt styður sekúndur.
  4. Lestu áætlunina undir Með einföldum orðum (lýsingin er á ensku, sjá hér að neðan) og athugaðu síðan listann Næstu keyrslur. Veldu Tímabelti netþjónsins sem keyrir verkið og Hversu margar keyrslur á að birta.
  5. Afritaðu segðina með Afrita, eða notaðu eitt af Önnur snið.

Villur eru útskýrðar reit fyrir reit, til dæmis „Mínúta: 61 er utan marka (0–59)“, svo þú veist nákvæmlega hvað þarf að laga.

Athugaðu að lýsingin á áætluninni er á ensku, því lýsingarsafnið sem verkfærið notar hefur ekki íslenskt tungumál. Dagsetningar og tímar í listanum yfir næstu keyrslur eru hins vegar sniðnir eftir íslenskum venjum.

Reitirnir fimm í cron

Hefðbundin (Vixie) cron-lína hefur fimm reiti og síðan skipunina:

Reitur Leyfileg gildi
Mínúta 0–59
Klukkustund 0–23
Dagur mánaðar 1–31
Mánuður 1–12 eða JAN–DEC
Vikudagur 0–7 (0 og 7 eru sunnudagur) eða SUN–SAT

Hver reitur tekur við * (öll gildi), lista 1,15, bili 9-17, skrefi */15 (á 15 eininga fresti) eða bili með skrefi 0-30/10. Þannig þýðir */15 9-17 * * 1-5 á 15 mínútna fresti frá 9:00 til 17:45, mánudaga til föstudaga.

Ein regla kemur mörgum á óvart: þegar bæði Dagur mánaðar og Vikudagur eru takmörkuð keyrir hefðbundið cron þegar annað hvort passar. 0 0 13 * 5 keyrir 13. hvers mánaðar og hvern föstudag, ekki bara á föstudeginum þrettánda. Verkfærið sýnir viðvörun í því tilviki.

Næstu keyrslutímar og tímabelti

Cron notar klukku vélarinnar, eða stillinguna CRON_TZ/TZ í crontab-skránni. Listinn Næstu keyrslur er reiknaður fyrir tímabeltið sem þú velur, að teknu tilliti til sumartíma. Ísland notar reyndar ekki sumartíma, en margir netþjónar gera það: í vorskiptunum getur verk sem er stillt á 2:30 fallið niður og á haustin getur það keyrt einu sinni eða tvisvar, eftir útfærslu. Fyrir verk sem verða að keyra nákvæmlega einu sinni skaltu velja tíma utan 1:00–3:00 eða nota UTC.

Vixie cron, systemd-tímamælar, Quartz og AWS

  • systemd-tímamælar nota OnCalendar= með annarri setningafræði: Mon..Fri *-*-* 09..17:00/15:00. Skilyrði um vikudaga og dagsetningar eru sameinuð með OG, ekki EÐA, svo sumar cron-segðir eiga sér ekkert nákvæmt jafngildi.
  • Quartz og Spring setja sekúndureit fremst og geta bætt við ártalsreit. Annar daga-reiturinn verður að vera ? og Quartz númerar vikudaga 1–7 frá sunnudegi, ólíkt 0–6 í cron. Verkfærið skrifar vikudaga sem nöfn (MON-FRI) til að forðast þá gildru.
  • AWS EventBridge notar cron(mínútur klukkustundir dagur mánuður vikudagur ár): sex reiti, engar sekúndur, ? í öðrum daga-reitnum og ártal aftast.

Hefðbundið cron hefur engan sekúndureit. Sex reita formið með sekúndum er stutt af mörgum söfnum (node-cron, Spring, Quartz) en ekki af kerfis-crontab.

Algengar spurningar

Hvernig keyri ég verk á 5 mínútna fresti?

Notaðu */5 * * * *. Verkið keyrir á mínútum 0, 5, 10 … hverrar klukkustundar.

Hvernig keyri ég verk síðasta dag mánaðar?

Mörg tímaáætlunarforrit taka við L í reitnum dagur mánaðar: 0 18 L * *. Með hreinu Vixie cron keyrirðu daglega á dögum 28–31 og prófar í skriftunni hvort morgundagurinn sé sá 1.

Hvað gerir @reboot?

Það keyrir skipunina einu sinni, þegar cron-þjónninn ræsist. Það hefur enga áætlun, svo verkfærið getur ekki talið upp keyrslutíma fyrir það.

Af hverju keyrir verkið mitt ekki á tímanum sem er sýndur?

Athugaðu tímabelti netþjónsins, crontab notandans á móti /etc/crontab (sem hefur aukareit fyrir notanda) og PATH: cron ræsist með lágmarksumhverfi.

Er 0 eða 7 sunnudagur?

Hvort tveggja. Í reitnum vikudagur þýða 0 og 7 sunnudag, 1 er mánudagur og 6 er laugardagur.