Utilia

Cron-avaldise koostaja

Koosta cron-avaldis väli haaval, loe seda lihtsate sõnadega, vaata järgmisi käivitusaegu mis tahes ajavööndis ja teisenda systemd või Quartzi vormingusse.

Koostaja

VäliRežiimVäärtus
Minut0–59
Tund0–23
Kuupäev1–31, L
Kuu1–12 või JAN–DEC
Nädalapäev0–7 (0 ja 7 = pühapäev) või SUN–SAT

Kuidas cron-avaldist koostada

  1. Kirjuta või kleebi avaldis väljale Cron-avaldis või vali see jaotisest Eelseadistused. Makrod nagu @daily või @weekly on samuti lubatud.
  2. Või kasuta Koostajat: vali iga välja jaoks Režiim (Iga, Iga N-s, Kindlad väärtused, Vahemik või Oma) ja täida Väärtus. Avaldis uueneb jooksvalt ning avaldise muutmine uuendab koostajat.
  3. Märgi Lisa sekundiväli (6 välja), kui sinu ajastaja toetab sekundeid.
  4. Loe ajakava Lihtsate sõnadega (lehe keeles, kui kirjeldusteek seda toetab, muidu inglise keeles) ja vaata loendit Järgmised käivitused. Vali töö käivitava serveri Ajavöönd ja Mitu käivitust loetleda.
  5. Kopeeri avaldis nupuga Kopeeri või kasuta mõnda Muud vormingut.

Vigu selgitatakse väli haaval, näiteks „Minut: 61 on vahemikust väljas (0–59)“, nii et tead täpselt, mida parandada.

Viis cron-välja

Standardne (Vixie) cron-rida koosneb viiest väljast, millele järgneb käsk:

Väli Lubatud väärtused
Minut 0–59
Tund 0–23
Kuupäev 1–31
Kuu 1–12 või JAN–DEC
Nädalapäev 0–7 (0 ja 7 on pühapäev) või SUN–SAT

Iga väli aktsepteerib * (iga väärtus), loendit 1,15, vahemikku 9-17, sammu */15 (iga 15 ühiku järel) või sammuga vahemikku 0-30/10. Seega */15 9-17 * * 1-5 tähendab iga 15 minuti järel kella 9:00-st 17:45-ni, esmaspäevast reedeni.

Üks reegel üllatab paljusid: kui nii Kuupäev kui ka Nädalapäev on piiratud, käivitub klassikaline cron, kui kumbki neist sobib. 0 0 13 * 5 käivitub igal 13. kuupäeval ja igal reedel, mitte ainult reede 13. kuupäeval. Sellisel juhul näitab tööriist hoiatust.

Järgmised käivitusajad ja ajavööndid

Cron kasutab masina kella või crontabi seadistust CRON_TZ/TZ. Loend Järgmised käivitused arvutatakse valitud ajavööndi jaoks, sealhulgas suve- ja talveaja üleminekud: kevadisel üleminekul võidakse kell 2:30 seatud töö vahele jätta ning sügisel võib see olenevalt teostusest käivituda ühe või kaks korda. Tööde jaoks, mis peavad käivituma täpselt ühe korra, eelista aegu väljaspool 1:00–3:00 või kasuta UTC-d.

Vixie cron, systemd taimerid, Quartz ja AWS

  • systemd taimerid kasutavad OnCalendar= teistsuguse süntaksiga: Mon..Fri *-*-* 09..17:00/15:00. Nädalapäeva ja kuupäeva tingimused ühendatakse JA, mitte VÕI abil, seega mõnel cron-avaldisel täpset vastet pole.
  • Quartz ja Spring panevad sekundivälja esimeseks ja võivad lisada aasta välja. Üks kahest päevaväljast peab olema ?, ja Quartz nummerdab nädalapäevad 1–7 alates pühapäevast, erinevalt cron 0–6-st. Tööriist kirjutab nädalapäevad nimedena (MON-FRI), et seda lõksu vältida.
  • AWS EventBridge kasutab kuju cron(minutid tunnid kuupäev kuu nädalapäev aasta): kuus välja, ilma sekunditeta, ? ühel päevaväljal ja aasta lõpus.

Standardsel cronil sekundivälja pole. Kuuest väljast koosnevat sekunditega vormi toetavad paljud teegid (node-cron, Spring, Quartz), kuid süsteemi crontab mitte.

Korduma kippuvad küsimused

Kuidas käivitada tööd iga 5 minuti järel?

Kasuta */5 * * * *. Töö käivitub iga tunni minutitel 0, 5, 10 jne.

Kuidas käivitada tööd kuu viimasel päeval?

Paljud ajastajad aktsepteerivad kuupäevaväljal L: 0 18 L * *. Tavalise Vixie croniga käivita iga päev kuupäevadel 28–31 ja kontrolli skriptis, kas homme on 1. kuupäev.

Mida teeb @reboot?

See käivitab käsu ühe korra, kui cron-deemon käivitub. Sellel pole ajakava, seega ei saa tööriist selle käivitusaegu loetleda.

Miks minu töö ei käivitu näidatud ajal?

Kontrolli serveri ajavööndit, kasutaja crontabi ja /etc/crontab-i erinevust (viimasel on lisaväli kasutaja jaoks) ning PATH-i: cron käivitub minimaalse keskkonnaga.

Kas pühapäev on 0 või 7?

Mõlemad. Nädalapäeva väljal tähendavad 0 ja 7 pühapäeva, 1 on esmaspäev ja 6 on laupäev.