Ndërtuesi i shprehjeve cron
Ndërto një shprehje cron fushë pas fushe, lexoje me fjalë të thjeshta, shih ekzekutimet e radhës në çdo zonë kohore dhe konvertoje në systemd, Quartz ose AWS.
Me fjalë të thjeshta
Janë caktuar edhe dita e muajit, edhe dita e javës: cron-i klasik ekzekutohet kur përputhet NJËRA prej tyre (jo të dyja).
Ndërtuesi
| Fusha | Mënyra | Vlera |
|---|---|---|
| Sekonda0–59 | ||
| Minuta0–59 | ||
| Ora0–23 | ||
| Dita e muajit1–31, L | ||
| Muaji1–12 ose JAN–DEC | ||
| Dita e javës0–7 (0 dhe 7 = e diel) ose SUN–SAT |
Ekzekutimet e radhës
Formate të tjera
- rreshti crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Si të ndërtosh një shprehje cron
- Shkruaj ose ngjit një shprehje te Shprehja cron, ose zgjidh një nga Paravendosje. Pranohen edhe makrot si
@dailyose@weekly. - Ose përdor Ndërtuesin: për çdo fushë zgjidh një Mënyrë (Çdo, Çdo N, Vlera të caktuara, Interval ose Vetjake) dhe plotëso Vlerën. Shprehja përditësohet gjatë punës, dhe ndryshimi i shprehjes përditëson ndërtuesin.
- Shëno Shto një fushë sekondash (6 fusha) nëse planifikuesi yt mbështet sekonda.
- Lexo orarin Me fjalë të thjeshta dhe pastaj shiko listën Ekzekutimet e radhës. Zgjidh Zonën kohore të serverit që ekzekuton punën dhe Sa ekzekutime të listohen. Përshkrimi i orarit është në anglisht.
- Kopjo shprehjen me Kopjo, ose përdor një nga Formate të tjera.
Gabimet shpjegohen fushë pas fushe, për shembull “Minuta: 61 është jashtë intervalit (0–59)”, ndaj e di saktësisht çfarë duhet korrigjuar.
Pesë fushat e cron
Një rresht cron standard (Vixie) ka pesë fusha, pastaj komandën:
| Fusha | Vlerat e lejuara |
|---|---|
| Minuta | 0–59 |
| Ora | 0–23 |
| Dita e muajit | 1–31 |
| Muaji | 1–12 ose JAN–DEC |
| Dita e javës | 0–7 (0 dhe 7 janë e diel) ose SUN–SAT |
Çdo fushë pranon * (çdo vlerë), një listë 1,15, një interval 9-17, një hap */15 (çdo 15 njësi) ose një interval me hap 0-30/10. Pra */15 9-17 * * 1-5 do të thotë çdo 15 minuta nga ora 9:00 deri në 17:45, nga e hëna në të premte.
Një rregull që habit shumëkënd: kur janë të kufizuara edhe Dita e muajit, edhe Dita e javës, cron-i klasik ekzekutohet kur përputhet njëra prej tyre. 0 0 13 * 5 ekzekutohet çdo të 13-n dhe çdo të premte, jo vetëm të premten e 13-të. Mjeti shfaq një paralajmërim në atë rast.
Ekzekutimet e radhës dhe zonat kohore
Cron përdor orën e makinës, ose cilësimin CRON_TZ/TZ të crontab-it. Lista Ekzekutimet e radhës llogaritet për zonën kohore që zgjedh, përfshirë ndryshimet e orës verore: gjatë ndryshimit të pranverës një punë e caktuar në 2:30 mund të anashkalohet, ndërsa në vjeshtë mund të ekzekutohet një ose dy herë, sipas zbatimit. Për punët që duhet të ekzekutohen saktësisht një herë, preferoji orët jashtë 1:00–3:00 ose përdor UTC. Datat e ekzekutimeve shfaqen sipas gjuhës së faqes.
Vixie cron, kohëmatësit systemd, Quartz dhe AWS
- Kohëmatësit systemd përdorin
OnCalendar=me sintaksë tjetër:Mon..Fri *-*-* 09..17:00/15:00. Kushtet e ditës së javës dhe të datës kombinohen me AND, jo OR, ndaj disa shprehje cron nuk kanë ekuivalent të saktë. - Quartz dhe Spring vendosin një fushë sekondash në fillim dhe mund të shtojnë një fushë viti. Njëra nga dy fushat e ditës duhet të jetë
?, dhe Quartz i numëron ditët e javës 1–7 nga e diela, ndryshe nga 0–6 i cron-it. Mjeti i shkruan ditët e javës me emra (MON-FRI) për të shmangur këtë kurth. - AWS EventBridge përdor
cron(minuta orë ditë muaj ditë-jave vit): gjashtë fusha, pa sekonda, një?në njërën fushë dite dhe një vit në fund.
Cron-i standard nuk ka fushë sekondash. Forma me 6 fusha me sekonda mbështetet nga shumë biblioteka (node-cron, Spring, Quartz), por jo nga crontab-i i sistemit.
Pyetje të shpeshta
Si ta ekzekutoj një punë çdo 5 minuta?
Përdor */5 * * * *. Puna ekzekutohet në minutat 0, 5, 10… të çdo ore.
Si ta ekzekutoj një punë ditën e fundit të muajit?
Shumë planifikues pranojnë L në fushën e ditës së muajit: 0 18 L * *. Me Vixie cron të thjeshtë, ekzekuto çdo ditë më 28–31 dhe testo në skript nëse nesër është e para e muajit.
Çfarë bën @reboot?
E ekzekuton komandën një herë, kur nis demoni cron. Nuk ka orar, ndaj mjeti nuk mund të listojë kohët e ekzekutimit për të.
Pse puna ime nuk ekzekutohet në kohën e treguar?
Kontrollo zonën kohore të serverit, crontab-in e përdoruesit kundrejt /etc/crontab (që ka një fushë shtesë përdoruesi) dhe PATH: cron nis me një mjedis minimal.
A është 0 apo 7 e diel?
Të dyja. Në fushën e ditës së javës, 0 dhe 7 do të thotë e diel, 1 është e hëna dhe 6 është e shtuna.
Mjete të ngjashme
- Konvertues timestamp Unix Konverto timestamp-e Unix në sekonda ose milisekonda në data të lexueshme në orën lokale, UTC dhe ISO 8601, dhe ktheje çdo datë në kohë epoch.
- Konvertuesi i zonave kohore Konverto një datë e orë nga një zonë kohore në disa të tjera njëherësh, me orën verore të trajtuar automatikisht. Kërko çdo zonë kohore IANA ose qytet.
- Kalkulatori chmod Konverto lejet Unix mes kutive, shënimit oktal (755) dhe simbolik (rwxr-xr-x), me setuid, setgid, sticky bit dhe komanda chmod gati.