Rakenna cron-lauseke
- Hallintapaneeli
- Dokumentaatio
- API
Miksi visuaalinen cron-rakentaja?
Cron-lauseke koostuu vain viidestä kentästä, mutta se on silti yksi suurimmista
tuotantovirheiden lähteistä. Kuinka monta kertaa kehittäjä on kirjoittanut 0 0 * * 1
ajatellen "joka maanantai", muistamatta, että 1 voi tarkoittaa sunnuntaita toteutuksesta
riippuen? Kuinka monta kertaa */15 ja 15 on sekoitettu keskenään?
Cron-rakentaja vastaa tähän tarpeeseen: rakenna crontab-lauseke
visuaalisesti yleisten esiasetusten tai yksittäisten kenttien avulla ja saa lopullinen lauseke valmiina
kopioitavaksi Linuxin crontabiin, Kubernetesin CronJobiin tai GitHub Actionsin aikatauluun.
Työkalu on vastakohta cron-dekooderillemme: siinä missä muunnin ottaa lausekkeen ja näyttää seuraavat suorituskerrat, rakentaja ottaa ihmisen tekemät valinnat ja tuottaa vastaavan cron-lausekkeen.
Miten se toimii
Graafinen käyttöliittymä tarjoaa kaksi toisiaan täydentävää rakennustapaa:
- Esiasetustila: taajuuden valitsin (joka minuutti, joka tunti, joka päivä, joka viikko, joka kuukausi, joka vuosi, mukautettu), joka generoi välittömästi pätevän cron-lausekkeen.
- Kenttätila: viisi muokattavaa kenttää (minuutti, tunti, kuukauden päivä, kuukausi,
viikonpäivä), joihin voit kirjoittaa vapaasti
*, kokonaisluvun, välin1-5, luettelon1,15,30tai askeleen*/15.
Rakentaja päivittää lausekkeen reaaliajassa ja näyttää selkokielisen kuvauksen ("joka päivä klo 03.00", "15 minuutin välein"), joka toimii varmistuksena: jos lause ei vastaa tarkoitustasi, lauseke on todennäköisesti väärin.
Viisi cron-kenttää selitettynä
Vakio- cron-lauseke sisältää viisi välilyönneillä erotettua kenttää:
minuutti tunti kuukauden-päivä kuukausi viikonpäivä
* * * * *
- minuutti (0–59) ;
- tunti (0–23) ;
- kuukauden päivä (1–31) ;
- kuukausi (1–12 tai lyhenteet Jan, Feb jne.) ;
- viikonpäivä (0–7, joissa 0 ja 7 tarkoittavat molemmat sunnuntaita useimmissa toteutuksissa).
Jokainen kenttä hyväksyy useita muotoja: * (kaikki arvot), tietty kokonaisluku
(5), luettelo (1,3,5), väli (9-17), askel (*/15
joka 15. arvo) tai yhdistelmä (0-30/5).
Tyypillisiä käyttötapauksia
- Kehittäjä, joka opettelee cronia: nähdä, miten kukin kenttä vaikuttaa, ilman riskiä väärästä lausekkeesta tuotannossa.
- Kiireinen ylläpitäjä: luoda muutamassa sekunnissa aikataulu Linuxin cronille, Kubernetes CronJobille tai Ansible-tehtävälle lukematta man-sivuja uudelleen.
- Kehittäjä ilman POSIX-kokemusta: tuottaa pätevä crontab-lauseke Symfony Schedulerille, Laravel Schedulerille tai node-cronille tuntematta historiallista syntaksia.
- DevOps-katselmointi: prototyypittää nopeasti lauseke pull requestia varten ja vahvistaa se sitten cron-dekooderilla.
- Perityn koodin migraatio: muotoilla historiallinen cron-lauseke uudelleen rakentajan avulla varmistaakseen sen merkityksen ennen siirtämistä muualle.
Yleiset esiasetukset
Esiasetuksen valitseminen korvaa yksittäiset kentät and tuottaa vastaavan lausekkeen:
- Joka minuutti :
* * * * *. Vältettävä tuotannossa ilman erityistä syytä. - Joka tunti :
0 * * * *. Jokaisen tunnin alussa. - Joka päivä :
0 0 * * *. Keskiyöllä. - Joka viikko :
0 0 * * 0. Joka sunnuntai keskiyöllä. - Joka kuukausi :
0 0 1 * *. Kuukauden 1. päivä keskiyöllä. - Joka vuosi :
0 0 1 1 *. Tammikuun 1. päivä keskiyöllä.
Yleisiä tunnistettavia malleja
| Lauseke | Selkokielinen kuvaus |
|---|---|
0 0 * * * |
Joka päivä keskiyöllä |
*/15 * * * * |
15 minuutin välein |
0 9 * * 1-5 |
Arkipäivisin klo 09.00 |
0 0 1 * * |
Kuukauden 1. päivä keskiyöllä |
0 0 * * 0 |
Sunnuntaisin keskiyöllä |
*/5 9-17 * * 1-5 |
5 minuutin välein työaikana |
0 3 * * * |
Joka päivä klo 03.00 |
30 2 1,15 * * |
Kuukauden 1. ja 15. päivä klo 02.30 |
Mukautetun lausekkeen rakentaminen
Erityistapauksia varten avustaja tarjoaa viisi kenttää vapaata syöttöä varten. Joitakin hyödyllisiä esimerkkejä:
- Joka päivä klo 03.00 : minuutti=
0, tunti=3, muut kentät*. - 15 minuutin välein : minuutti=
*/15, muut kentät*. - Maanantaista perjantaihin klo 09.00 : minuutti=
0, tunti=9, viikonpäivä=1-5. - Kuukauden 1. ja 15. päivä keskipäivällä : minuutti=
0, tunti=12, kuukauden-päivä=1,15. - 5 minuutin välein klo 09.00 ja 17.00 välillä : minuutti=
*/5, tunti=9-17.
Miten cron-rakentajaa käytetään
- Valitse esiasetus (joka minuutti, tunti, päivä, viikko, kuukausi tai vuosi), joka vastaa perustarvettasi.
- Hienosäädä tarvittaessa muokkaamalla suoraan viittä kenttää (minuutti, tunti, kuukauden päivä, kuukausi, viikonpäivä).
- Lue työkalun generoima selkokielinen lause varmistaaksesi tarkoituksesi.
- Kopioi tuotettu cron-lauseke kopiointipainikkeella.
- Vahvista aikataulu cron-dekooderillamme, joka laskee seuraavat todelliset suorituspäivät.
- Liitä lauseke Linuxin crontabiin, Kubernetes CronJobiin, Symfony Schedulerille tai GitHub Actions -työnkulkuun.
Tyypilliset sudenkuopat
- Kuukauden päivän ja viikonpäivän yhdistäminen : jos kumpikaan ei ole
*, käyttäytyminen vaihtelee toteutuksittain. Linux/Vixie cron soveltaa OR-logiikkaa; nykyaikaisissa kirjastoissa voi olla eri käytäntö. Tätä kannattaa välttää. - Päivä 1 = maanantai vai sunnuntai? : riippuu maasta ja käytännöstä. Useimmat Unix-cronit katsovat sunnuntai=0 ja lauantai=6. Tarkista käyttämäsi ajastin.
- Aikavyöhyke : Unix-cron käyttää oletuksena palvelimen aikavyöhykettä. Sovellustason ajastimet (Symfony Scheduler, Quartz) mahdollistavat usein oman aikavyöhykkeen asettamisen.
- Puuttuva minuutti :
* * * * *suorittaa tehtävän joka minuutti, mikä on harvoin tarkoitus. Muista asettaa tarkka aloitushetki (0) tuntitehtäville.
Selkokielinen kuvaus ja tulos
Cron-lausekkeen lisäksi työkalu tarjoaa lyhyen selkokielisen kuvauksen ("joka päivä keskiyöllä", "5 minuutin välein"). Se on varmistus: jos lause ei vastaa tarkoitustasi, lauseke on todennäköisesti väärin. Monimutkaisissa tapauksissa käytä sen jälkeen cron-dekooderiamme laskeaksesi seuraavat todelliset suorituspäivät.
Usein kysytyt kysymykset
Voinko muokata lauseketta manuaalisesti käyttöliittymän käytön jälkeen?
Kyllä. Rakentaja ei ole rajoittava tila: kaikki viisi kenttää ovat muokattavissa milloin tahansa. Voit lähteä liikkeelle esiasetuksesta ja muokata kenttää käsin saadaksesi räätälöidyn crontab-lausekkeen. Selkokielinen kuvaus lasketaan uudelleen välittömästi.
Tukeeko työkalu 6-kenttäistä Quartz-muotoa (sekunneilla)?
Ei: 5-kenttäinen muoto on Unix-standardi ja useimpien ajastimien (Linux crontab, Kubernetes CronJob,
GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler) yhteinen perusta. Quartz (Java)
hyväksyy lisäkentän sekunneille ja erityissymboleja (?, L, W,
#), mutta tämä tarve on harvinaisempi.
Miten aikavyöhykettä hallitaan?
Rakentaja tuottaa neutraalin cron-lausekkeen: tehtävän suorittava moottori soveltaa omaa aikavyöhykettään.
Linuxin crontabissa se on palvelimen aikavyöhyke. GitHub Actionsissa se on UTC. Kubernetes 1.27+:ssa
voit asettaa spec.timeZone-arvon manifestissa. Symfony Scheduler ja Quartz tarjoavat
tehtäväkohtaisen aikavyöhykkeen.
Miten voin vahvistaa lausekkeeni suorittamatta sitä tuotannossa?
Käytä cron-dekooderiamme. Se laskee N seuraavaa suorituskertaa nykyhetkestä alkaen käynnistämättä mitään tehtävää. Tämä on paras tapa varmistaa, että cron-lauseke toimii suunnitellusti ennen sen käyttöönottoa.
Miten tämä liittyy Symfony Scheduleriin?
Symfony Scheduler hyväksyy 5-kenttäiset cron-lausekkeet muodon Schedule::cron('0 3 * * *', ...)
kautta. Rakentajan tuottama lauseke voidaan siis liittää sellaisenaan. Sama pätee Laravel
Scheduleriin (->cron('...')), node-croniin, Hangfireen ja Airflowhun.
Pitääkö komennon eteen lisätä käyttäjä järjestelmän crontabissa?
Kyllä, tiedostossa /etc/crontab tarvitaan käyttäjä (esim. 0 3 * * * www-data
/usr/bin/php ...), kun taas käyttäjäkohtainen crontab -e jättää sen pois. Itse
lauseke pysyy samana.
Pyyntöesimerkki
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":"*"}'
Syöteskeema
| Kenttä | Tyyppi | Pakollinen | Oletus |
|---|---|---|---|
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 | – | * |
Päätepisteet
GET https://cdrn.fr/api/v1/tools- listaa kaikki saatavilla olevat työkalutGET https://cdrn.fr/api/v1/tools/cron-builder- hakee tämän työkalun skeemanPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- suorittaa tämän työkalun JSON-payloadilla