Cron kifejezés építése
- Irányítópult
- Dokumentáció
- API
Miért egy vizuális cron builder?
Egy cron kifejezés mindössze öt mezőből áll, mégis az egyik legtöbb hibát generálja az éles üzemben.
Hányszor írt egy fejlesztő 0 0 * * 1-et, azt gondolva, hogy "minden hétfőn", anélkül, hogy eszébe jutott
volna, hogy az 1 a megvalósítástól függően vasárnapot is jelenthet? Hányszor tévesztették össze a
*/15-öt és a 15-öt? A cron builder erre az igényre válaszol: vizuálisan
állíthat össze egy crontab kifejezést a gyakori előbeállításokból vagy egyéni mezőkből, és megkapja
a kész kifejezést, amelyet beilleszthet egy Linux crontabba, egy Kubernetes CronJobba vagy egy GitHub Actions ütemezésbe.
Az eszköz a cron decoder-ünk ellentéte: míg a konverter egy kifejezést vesz alapul és felsorolja a következő futtatásokat, a builder emberi választásokat vesz alapul, és előállítja a megfelelő cron kifejezést.
Hogyan működik
A grafikus felület két kiegészítő összeállítási módot kínál:
- Előbeállítás mód: egy gyakoriságválasztó (minden percben, minden órában, minden nap, minden héten, minden hónapban, minden évben, egyéni), amely azonnal generál egy érvényes cron kifejezést.
- Mező mód: öt szerkeszthető mező (perc, óra, hónap napja, hónap, hét napja), ahol szabadon megadhatja
a
*karaktert, egy egész számot, egy tartományt1-5, egy listát1,15,30vagy egy lépésközt*/15.
A builder valós időben frissíti a kifejezést, és megjelenít egy rövid, emberi nyelven olvasható formát ("minden nap 3 órakor", "15 percenként"), amely biztonsági korlátként szolgál: ha a mondat nem egyezik a szándékával, a kifejezés valószínűleg hibás.
Az öt cron mező, érthetően
Egy standard cron kifejezés öt mezőt tartalmaz, szóközökkel elválasztva:
perc óra hónap-napja hónap hét-napja
* * * * *
- perc (0-tól 59-ig);
- óra (0-tól 23-ig);
- hónap napja (1-től 31-ig);
- hónap (1-től 12-ig vagy Jan, Feb stb. rövidítések);
- hét napja (0-tól 7-ig, a 0 és a 7 is vasárnapot jelent a legtöbb megvalósításban).
Minden mező több formát elfogad: * (minden érték), egy pontos egész szám (5), egy lista
(1,3,5), egy tartomány (9-17), egy lépésköz (*/15 minden 15. érték), vagy
ezek kombinációja (0-30/5).
Tipikus felhasználási esetek
- Cron-t tanuló fejlesztő: vizualizálhatja, hogyan hatnak egymásra az egyes mezők, anélkül, hogy kockáztatna egy hibás kifejezést az éles üzemben.
- Siető rendszergazda: néhány másodperc alatt generálhat ütemezést egy Linux cronhoz, egy Kubernetes CronJobhoz vagy egy Ansible jobhoz anélkül, hogy újra elolvasná a man oldalt.
- POSIX tapasztalattal nem rendelkező fejlesztő: érvényes crontab kifejezést készíthet Symfony Schedulerhez, Laravel Schedulerhez vagy node-cronhoz a történelmi szintaxis ismerete nélkül.
- DevOps a felülvizsgálat során: gyorsan prototipizálhat egy kifejezést egy pull requesthez, majd érvényesítheti azt a cron decoder segítségével.
- Legacy migráció: egy történelmi cron kifejezés újrafogalmazása a builderen keresztül, hogy meggyőződjön a szemantikáról, mielőtt máshová továbbítaná.
Gyakori előbeállítások
Egy előbeállítás kiválasztása felülírja az egyéni mezőket, és előállítja a megfelelő kifejezést:
- Minden percben:
* * * * *. Kerülendő az éles üzemben, kivéve különleges igény esetén. - Minden órában:
0 * * * *. Minden óra elején. - Minden nap:
0 0 * * *. Éjfélkor. - Minden héten:
0 0 * * 0. Minden vasárnap éjfélkor. - Minden hónapban:
0 0 1 * *. A hónap 1. napján éjfélkor. - Minden évben:
0 0 1 1 *. Január 1-jén éjfélkor.
Gyakori ismerendő minták
| Kifejezés | Emberi olvasat |
|---|---|
0 0 * * * |
Minden nap éjfélkor |
*/15 * * * * |
15 percenként |
0 9 * * 1-5 |
Minden munkanapon 9 órakor |
0 0 1 * * |
A hónap 1. napján éjfélkor |
0 0 * * 0 |
Minden vasárnap éjfélkor |
*/5 9-17 * * 1-5 |
5 percenként munkaidőben |
0 3 * * * |
Minden nap hajnali 3-kor |
30 2 1,15 * * |
A hónap 1. és 15. napján 2:30-kor |
Egyéni kifejezés összeállítása
Specifikusabb esetekhez az asszisztens szabad bevitelre kínálja az öt mezőt. Néhány hasznos példa:
- Minden nap hajnali 3-kor: perc=
0, óra=3, egyéb mezők*. - 15 percenként: perc=
*/15, egyéb mezők*. - Hétfőtől péntekig 9 órakor: perc=
0, óra=9, hét-napja=1-5. - A hónap minden 1. és 15. napján délben: perc=
0, óra=12, hónap-napja=1,15. - 5 percenként 9 és 17 óra között: perc=
*/5, óra=9-17.
Hogyan használjuk a cron buildert
- Válasszon egy előbeállítást (minden percben, minden órában, minden nap, minden héten, minden hónapban, minden évben), amely megfelel az igénye alapjának.
- Szükség esetén finomítsa az öt mező (perc, óra, hónap napja, hónap, hét napja) közvetlen szerkesztésével.
- Olvassa el az eszköz által generált emberi mondatot a szándék megerősítéséhez.
- Másolja ki az előállított cron kifejezést a másolás gombbal.
- Érvényesítse az ütemezést a cron decoder-ünkkel, amely kiszámítja a következő tényleges futtatási dátumokat.
- Illessze be a kifejezést a Linux crontabba, a Kubernetes CronJobba, a Symfony Schedulerbe vagy a GitHub Actions munkafolyamatba.
Klasszikus csapdák
- Kombinált hónap napja és hét napja: ha mindkettő nem
*, a viselkedés a megvalósítástól függően eltér. A Linux/Vixie cron egy VAGY kapcsolatot alkalmaz; a modern könyvtáraknak néha más a viselkedése. Kerülendő. - 1. nap = hétfő vagy vasárnap?: az országtól és a konvenciótól függ. A legtöbb Unix cron a vasárnapot 0-nak, a szombatot pedig 6-nak tekinti. Ellenőrizze az ütemezőjét.
- Időzóna: egy Unix cron alapértelmezés szerint a szerver időzónáját használja. Az alkalmazás-ütemezők (Symfony Scheduler, Quartz) gyakran lehetővé teszik egy dedikált időzóna rögzítését.
- Hiányzó perc: a
* * * * *minden percben lefuttatja a feladatot, ami ritkán az, amit szeretnénk. Ne felejtsen el pontos indítót (0) megadni az óránkénti feladatokhoz.
Emberi olvasat és kimenet
A cron kifejezés mellett az eszköz egy rövid, emberi nyelven olvasható formát is kínál ("minden nap éjfélkor", "5 percenként"). Ez egy biztonsági korlát: ha a mondat nem egyezik a szándékával, a kifejezés valószínűleg hibás. Összetett esetekben használja cron decoder-ünket a következő tényleges futtatási dátumok kiszámításához.
Gyakran ismételt kérdések
Szerkeszthetem-e manuálisan a kifejezést a felület használata után?
Igen. A builder nem egy kizárólagos mód: az öt mező bármikor szerkeszthető marad. Indulhat egy előbeállításból, majd kézzel módosíthat egy mezőt egy egyedi crontab kifejezés eléréséhez. Az emberi olvasat azonnal újraszámításra kerül.
Támogatja az eszköz a 6 mezős Quartz formátumot (másodpercekkel)?
Nem: az 5 mezős formátum az Unix szabvány és a legtöbb ütemező közös alapja (Linux crontab, Kubernetes CronJob,
GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler). A Quartz (Java) egy plusz mezőt fogad el a
másodpercekhez és speciális szimbólumokat (?, L, W, #), de
ez az igény ritka marad.
Hogyan kezelik az időzónát?
A builder egy semleges cron kifejezést állít elő: az a motor alkalmazza az időzónáját, amelyik a feladatot futtatja.
Egy Linux crontab esetén ez a szerver TZ-je. GitHub Actions esetén ez az UTC. Kubernetes 1.27+ esetén a
spec.timeZone-t rögzítheti a manifestben. A Symfony Scheduler és a Quartz feladatonkénti dedikált
időzónát tesz elérhetővé.
Hogyan érvényesíthetem a kifejezésemet anélkül, hogy élesben lefuttatnám?
Használja cron decoder-ünket. Kiszámítja az aktuális pillanattól számított N következő futtatást, anélkül, hogy bármilyen feladatot elindítana. Ez a legjobb módja annak, hogy megerősítse, egy cron kifejezés valóban a tervezett időpontban indul-e el a telepítés előtt.
Mi a kapcsolat a Symfony Schedulerrel?
A Symfony Scheduler az 5 mezős cron kifejezéseket a Schedule::cron('0 3 * * *', ...) módon fogadja el.
A builder által előállított kifejezés tehát változatlanul beilleszthető. Ugyanez vonatkozik a Laravel Schedulerre
(->cron('...')), a node-cronra, a Hangfire-re és az Airflow-ra is.
Kell-e a parancs elé felhasználót írni a rendszer crontabjában?
Igen, az /etc/crontab fájlban szükség van egy felhasználóra (0 3 * * * www-data /usr/bin/php
...), míg a felhasználónkénti crontab -e elhagyja azt. Maga a kifejezés ugyanaz marad.
Kérés példa
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":"*"}'
Bemeneti séma
| Mező | Típus | Kötelező | Alapértelmezett |
|---|---|---|---|
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 | – | * |
Végpontok
GET https://cdrn.fr/api/v1/tools- listázza az összes elérhető eszköztGET https://cdrn.fr/api/v1/tools/cron-builder- lekéri ezen eszköz sémájátPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- végrehajtja ezen eszközt JSON payloaddal