Cron-kifejezés generátor
Állítsd össze a cron-kifejezést mezőnként, olvasd el közérthetően, nézd meg a következő futásokat, és váltsd át systemd, Quartz vagy AWS formátumra.
Közérthetően
A hónap napja és a hét napja is meg van adva: a klasszikus cron akkor fut, ha BÁRMELYIK egyezik (nem mindkettő).
Összeállító
| Mező | Mód | Érték |
|---|---|---|
| Másodperc0–59 | ||
| Perc0–59 | ||
| Óra0–23 | ||
| A hónap napja1–31, L | ||
| Hónap1–12 vagy JAN–DEC | ||
| A hét napja0–7 (a 0 és a 7 = vasárnap) vagy SUN–SAT |
Következő futások
Egyéb formátumok
- crontab-sor
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Hogyan készíts cron-kifejezést
- Írj vagy illessz be egy kifejezést a Cron-kifejezés mezőbe, vagy válassz egyet az Előbeállítások közül. Az olyan makrókat, mint a
@dailyvagy a@weekly, szintén elfogadja. - Vagy használd az Összeállító részt: minden mezőnél válassz Módot (Minden, Minden N-edik, Meghatározott értékek, Tartomány vagy Egyéni), és töltsd ki az Érték mezőt. A kifejezés menet közben frissül, a kifejezés szerkesztése pedig az összeállítót frissíti.
- Jelöld be a Másodpercmező hozzáadása (6 mező) opciót, ha az ütemeződ támogatja a másodperceket.
- Olvasd el az ütemezést Közérthetően (az oldal nyelvén, ha a leíró könyvtár támogatja, egyébként angolul), majd nézd meg a Következő futások listát. Válaszd ki a feladatot futtató szerver Időzóna beállítását, valamint azt, hogy Hány darab futást listázzon.
- Másold ki a kifejezést a Másolás gombbal, vagy használd az Egyéb formátumok egyikét.
A hibákat az eszköz mezőnként magyarázza, például „Perc: a(z) 61 kívül esik a tartományon (0–59)”, így pontosan tudod, mit kell javítani.
Az öt cron-mező
A szabványos (Vixie) cron-sor öt mezőből áll, utána jön a parancs:
| Mező | Megengedett értékek |
|---|---|
| Perc | 0–59 |
| Óra | 0–23 |
| A hónap napja | 1–31 |
| Hónap | 1–12 vagy JAN–DEC |
| A hét napja | 0–7 (a 0 és a 7 vasárnap) vagy SUN–SAT |
Minden mező elfogadja a * jelet (minden érték), a 1,15 listát, a 9-17 tartományt, a */15 lépést (minden 15. egység) vagy a lépéses tartományt, például 0-30/10. Így a */15 9-17 * * 1-5 azt jelenti: 15 percenként 9:00 és 17:45 között, hétfőtől péntekig.
Egy szabály sokakat meglep: ha mind a hónap napja, mind a hét napja mező korlátozva van, a klasszikus cron akkor fut, ha bármelyik egyezik. A 0 0 13 * 5 minden 13-án és minden pénteken lefut, nem csak a péntek 13-án. Ilyenkor az eszköz figyelmeztetést jelenít meg.
A következő futások és az időzónák
A cron a gép óráját használja, vagy a crontab CRON_TZ/TZ beállítását. A Következő futások lista az általad választott időzónára számolódik, a nyári időszámítás váltásait is beleértve: tavaszi óraátállításkor egy 2:30-ra időzített feladat kimaradhat, ősszel pedig a megvalósítástól függően egyszer vagy kétszer futhat. Azoknál a feladatoknál, amelyeknek pontosan egyszer kell lefutniuk, válassz 1:00–3:00 közötti sávon kívüli időpontot, vagy használj UTC-t.
Vixie cron, systemd időzítők, Quartz és AWS
- A systemd időzítők az
OnCalendar=beállítást használják eltérő szintaxissal:Mon..Fri *-*-* 09..17:00/15:00. A hétköznap- és dátumfeltételek ÉS, nem VAGY kapcsolatban állnak, ezért egyes cron-kifejezéseknek nincs pontos megfelelőjük. - A Quartz és a Spring egy másodpercmezőt tesz az elejére, és évmezőt is hozzáadhat. A két napmező egyikének
?-nek kell lennie, a Quartz pedig a hétköznapokat vasárnaptól számolva 1–7-ig számozza, a cron 0–6 számozásával ellentétben. Az eszköz a hétköznapokat nevekkel (MON-FRI) írja, hogy elkerülje ezt a csapdát. - Az AWS EventBridge a
cron(minutes hours day month weekday year)alakot használja: hat mező, másodperc nélkül, az egyik napmezőben?, a végén pedig egy év.
A szabványos cronnak nincs másodpercmezője. A másodperces, 6 mezős alakot sok könyvtár (node-cron, Spring, Quartz) támogatja, a rendszer crontabja viszont nem.
A cron-kifejezés leírása („Közérthetően”) magyarul is megjelenik, a következő futások dátumait pedig az eszköz magyar formátumban mutatja.
Gyakori kérdések
Hogyan futtassak egy feladatot 5 percenként?
Használd a */5 * * * * kifejezést. A feladat minden óra 0., 5., 10. stb. percében fut.
Hogyan futtassak egy feladatot a hónap utolsó napján?
Sok ütemező elfogadja az L jelet a hónap napja mezőben: 0 18 L * *. A sima Vixie cronnál futtasd naponta a 28–31. napokon, és a szkriptben ellenőrizd, hogy holnap 1-je van-e.
Mit csinál az @reboot?
Egyszer futtatja a parancsot, amikor a cron-démon elindul. Nincs ütemezése, ezért az eszköz nem tud futási időpontokat listázni hozzá.
Miért nem fut a feladatom a mutatott időpontban?
Ellenőrizd a szerver időzónáját, a felhasználó crontabját az /etc/crontab fájllal szemben (amelyben van egy további felhasználó-mező), és a PATH változót: a cron minimális környezettel indul.
A 0 vagy a 7 a vasárnap?
Mindkettő. A hét napja mezőben a 0 és a 7 egyaránt vasárnapot jelent, az 1 a hétfő, a 6 pedig a szombat.
Kapcsolódó eszközök
- Unix időbélyeg átváltó Váltsd át a másodpercben vagy ezredmásodpercben megadott Unix időbélyegeket olvasható dátummá helyi időben, UTC-ben és ISO 8601 formában, és fordítva.
- Időzóna átváltó Váltsd át egy dátum és időpont idejét egy időzónából több másikra egyszerre, a nyári időszámítás automatikus kezelésével. Keress IANA zónát vagy várost.
- Chmod számológép Váltsd át a Unix-jogosultságokat jelölőnégyzetek, oktális (755) és szimbolikus (rwxr-xr-x) forma között, setuid, setgid, sticky bittel és chmod parancsokkal.