Izveidot cron izteiksmi
- Vadības panelis
- Dokumentācija
- API
Kāpēc vizuālo kronu veidotājs?
cron izteiksmē ir pieci lauki, taču tā joprojām ir viens no visvairāk ģenerējošajiem laukiem
kļūdas ražošanā. Cik reižu izstrādātājs ir rakstījis 0 0 * * 1, domājot “katrs
pirmdienās", neaizmirstot, ka 1 var nozīmēt svētdienu atkarībā no ieviešanas? Cik daudz
vai mēs esam sajaucuši */15 un 15? Uz to atbild cron veidotājs
Nepieciešamība: vizuāli izveidojiet crontab izteiksmi no pašreizējiem sākotnējiem iestatījumiem vai
atsevišķus laukus un sagatavojiet galīgo izteiksmi, lai to ielīmētu Linux crontab, Kubernetes
CronJob vai GitHub darbību grafiks.
Šis rīks ir pretējs mūsu cron dekodētājam: kur pārveidotājs aizņem izteicienu un izpilda nākamās nāvessodas, celtnieks pieņem cilvēka izvēli un ražo atbilstošā cron izteiksme.
Kā tas darbojas
Grafiskais interfeiss piedāvā divus komplementārus kompozīcijas režīmus:
- Iepriekšiestatīts režīms: frekvences atlasītājs (katru minūti, katru stundu, katru dienu, katru nedēļu, katru mēnesi, katru gadu, pielāgots), kas nekavējoties ģenerē cron izteiksmi derīgs.
- Lauka režīms: pieci rediģējami lauki (minūte, stunda, mēneša diena, mēnesis, diena
nedēļa), kur jūs brīvi ievadāt
*, veselu skaitli, diapazonu1-5, sarakstu1,15,30vai soli*/15.
Veidotājs atjaunina izteiksmi reāllaikā un parāda īsu cilvēka lasījumu (“katru dienu 3:00", "ik pēc 15 minūtēm"), kas kalpo kā drošības līdzeklis: ja teikums neatbilst jūsu nodomam, izteiciens droši vien ir nepareizs.
Pieci cron lauki vienkāršā valodā
Standarta cron izteiksmē ir pieci lauki, kas atdalīti ar atstarpēm:
minūtes stunda mēneša diena mēnesis nedēļas diena
* * * * *
- minūte (no 0 līdz 59);
- stunda (no 0 līdz 23);
- mēneša diena (1.–31.);
- mēnesis (1.–12. vai saīsinājumi janvāris, februāris utt.);
- nedēļas diena (no 0 līdz 7, 0 un 7 ir svētdiena vairumā gadījumu ieviešanas).
Katrs lauks pieņem vairākas formas: * (visas vērtības), konkrēts vesels skaitlis
(5), saraksts (1,3,5), diapazons (9-17), solis (*/15
ik pēc 15 vērtībām) vai kombinācija (0-30/5).
Tipiski lietošanas gadījumi
- Izstrādātājs, kurš apgūst cron: iztēlojieties, kā katrs lauks mijiedarbojas, neriskējot nepatiesa izteiksme ražošanā.
- Sysadmin steidzas: dažu sekunžu laikā izveidojiet grafiku Linux cron, Kubernetes CronJob vai Ansible darbs, nepārlasot man lapu.
- Izstrādātājs bez POSIX pieredzes: izveidojiet crontab izteiksmi derīgs Symfony Scheduler, Laravel Scheduler vai node-cron, nezinot vēsturisko sintaksi.
- DevOps tiek pārskatīts: ātri izveidojiet izteiksmes prototipu, lai to piedāvātu piesaistē pieprasījumu, pēc tam apstipriniet to, izmantojot cron dekodētāju.
- Mantotā migrācija: pārformulējiet vēsturisko cron izteiksmi, izmantojot veidotāju lai nodrošinātu semantiku, pirms to nospiežat citur.
Kopējie sākotnējie iestatījumi
Atlasot sākotnējo iestatījumu, tiek pārrakstīti atsevišķi lauki un tiek izveidota atbilstošā izteiksme:
- Katru minūti:
* * * * *. Izvairieties no ražošanā, ja vien tas nav nepieciešams īpaši. - Katru stundu:
0 * * * *. Katras stundas sākumā. - Katru dienu:
0 0 * * *. Pusnaktī. - Katru nedēļu:
0 0 * * 0. Katru svētdienu pusnaktī. - Katru mēnesi:
0 0 1 * *. Mēneša 1. datums pusnaktī. - Katru gadu:
0 0 1 1 *. 1. janvāra pusnaktī.
Izplatītākie modeļi, kas jāzina
| Izteiksme | Cilvēka lasīšana |
|---|---|
0 0 * * * |
Katru dienu pusnaktī |
*/15 * * * * |
Ik pēc 15 minūtēm |
0 9 * * 1-5 |
Katru darba dienu plkst. 9:00 |
0 0 1 * * |
Mēneša pirmajā dienā pusnaktī |
0 0 * * 0 |
Katru svētdienu pusnaktī |
*/5 9-17 * * 1-5 |
Ik pēc 5 minūtēm darba laikā |
0 3 * * * |
Katru dienu plkst. 3:00 |
30 2 1,15 * * |
Mēneša 1. un 15. datums plkst. 2:30 |
Izveidojiet pielāgotu izteiksmi
Konkrētākos gadījumos vednis atklāj piecus laukus brīvai ievadei. Daži piemēri noderīgi:
- Katru dienu plkst. 3:00: minūte=
0, stunda=3, citi*. - Ik pēc 15 minūtēm: minute=
*/15, citi lauki*. - No pirmdienas līdz piektdienai plkst. 9:00: minūte=
0, stunda=9, day-of-the-week=1-5. - Katru mēneša 1. un 15. datumu pusdienlaikā: minūte=
0, stunda=12, mēneša diena=1,15. - Ik pēc 5 minūtēm laikā no 9:00 līdz 17:00: minute=
*/5, time=9-17.
Kā lietot cron veidotāju
- Izvēlieties sākotnējo iestatījumu (katru minūti, katru stundu, katru dienu, katru nedēļu, katru mēnesi, katru gadu) kas atbilst jūsu vajadzību pamatam.
- Ja nepieciešams, precizējiet, tieši rediģējot piecus laukus (minūte, stunda, mēneša diena, mēnesis, diena nedēļas).
- Lai apstiprinātu nolūku, izlasiet cilvēka teikumu, ko ģenerējis rīks.
- Nokopējiet cron izteiksmi, kas izveidota, izmantojot kopēšanas pogu.
- Apstipriniet grafiku, izmantojot mūsu cron dekodētāju, kas aprēķina nākamie faktiskie izpildes datumi.
- Ielīmējiet izteiksmi savā Linux crontab, Kubernetes CronJob, Symfony plānotājā vai savu GitHub Actions darbplūsmu.
Klasiskie slazdi
- Mēneša diena un nedēļas diena kopā: ja abi nav
*, uzvedība dažādās implementācijās atšķiras. Linux/Vixie cron lieto OR; uz Mūsdienu bibliotēkas dažkārt uzvedas savādāk. Lai izvairītos. - 1. diena = pirmdiena vai svētdiena?: atkarībā no valsts un konvencijas. Lielākā daļa cron Unix uzskata, ka svētdiena = 0 un sestdiena = 6. Pārbaudiet savu plānotāju.
- Laika josla: Unix cron pēc noklusējuma izmanto servera laika joslu. The Lietojumprogrammu plānotāji (Symfony Scheduler, Quartz) bieži ļauj iestatīt īpašu laika joslu.
- Trūkst minūtes:
* * * * *izpilda darbu katru minūti, kas reti ir tas, ko mēs vēlamies. Apsveriet iespēju iestatīt konkrētu aktivizētāju (0). stundu uzdevumi.
Cilvēka lasīšana un iznākums
Papildus cron izteiksmei rīks piedāvā īsu cilvēka lasīšanu (“visi dienas pusnaktī", "ik pēc 5 minūtēm"). Tas ir drošības līdzeklis: ja teikums neatbilst jūsu nodoms, izteiciens, iespējams, ir nepareizs. Sarežģītā gadījumā izmantojiet mūsu cron dekodētājs, lai aprēķinātu nākamos faktiskos izpildes datumus.
Bieži uzdotie jautājumi
Vai es varu manuāli rediģēt izteiksmi pēc saskarnes izmantošanas?
Jā. Veidotājs nav ekskluzīvs režīms: pieci lauki joprojām ir rediģējami jebkurā laikā. Tu var sākt no iepriekš iestatīta, pēc tam pielāgojiet lauku ar roku, lai iegūtucrontab pielāgota izteiksme. Cilvēka rādījums tiek nekavējoties pārrēķināts.
Vai rīks atbalsta 6 lauku kvarca formātu (ar sekundēm)?
Nē: 5 lauku formāts ir Unix standarts, un tas ir kopīgs lielākajai daļai plānotāju
(Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler).
Kvarcs (Java) pieņem papildu lauku sekundēm un konkrētiem simboliem
(?, L, W, #), taču šī nepieciešamība joprojām ir reta.
Kā tiek pārvaldīta laika josla?
Būvnieks rada neitrālu cron izteiksmi: tas ir dzinējs, kas izpilda darbu, kas to piemēro
laika josla. Linux crontab tas ir servera TZ. Vietnē GitHub Actions tas ir UTC. Ieslēgts
Kubernetes 1.27+, manifestā varat iestatīt spec.timeZone. Symfony plānotājs un
Kvarcs katram uzdevumam atklāj īpašu laika joslu.
Kā pārbaudīt izteiksmi, nepalaižot to ražošanā?
Izmantojiet mūsu cron dekodētāju. Tas aprēķina nākamo N izpildi no pašreizējā brīža, neuzsākot nevienu darbu. Tas ir labākais veids, kā apstiprināt, ka a cron izteiksme tiek aktivizēta ieplānotajā laikā pirms tās izvietošanas.
Kāds tam sakars ar Symfony Scheduler?
Symfony plānotājs pieņem 5 lauku cron izteiksmes, izmantojot Schedule::cron('0 3 * * *', ...)
. Tāpēc veidotāja radīto izteiksmi var ielīmēt tādu, kāda tā ir. Tas pats par Laravelu
Plānotājs (->cron('...')), mezgls-cron, Hangfire un Airflow.
Vai komandai sistēmas crontab ir jābūt prefiksam?
Jā, failā /etc/crontab ir nepieciešams lietotājs (0 3 * * * www-data /usr/bin/php
...), savukārt crontab -e katram lietotājam to izlaiž. Pati izteiksme paliek
identisks.
Pieprasījuma piemērs
curl -X POST https://cdrn.fr/api/v1/tools/cron-builder/execute \
-H "Content-Type: application/json" \
-d '{"preset":"none","minute":"*","hour":"*","day_of_month":"*","month":"*","day_of_week":"*"}'
Ievades shēma
| Lauks | Tips | Obligāts | Noklusējums |
|---|---|---|---|
preset |
choice (none, every_minute, hourly, daily, weekly, monthly, yearly) | – | none |
minute |
string | – | * |
hour |
string | – | * |
day_of_month |
string | – | * |
month |
string | – | * |
day_of_week |
string | – | * |
Endpoint
GET https://cdrn.fr/api/v1/tools- uzskaita visus pieejamos rīkusGET https://cdrn.fr/api/v1/tools/cron-builder- iegūst šī rīka shēmuPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- izpilda šo rīku ar JSON payload