Cron išraiškų generatorius
Sudaryk cron išraišką laukas po lauko, pamatyk kitus paleidimo laikus bet kurioje laiko juostoje ir konvertuok į systemd, Quartz ar AWS formatą.
Paprastais žodžiais
Nurodyta ir mėnesio diena, ir savaitės diena: klasikinis cron veikia, kai atitinka BENT VIENA iš jų (ne abi).
Konstruktorius
| Laukas | Režimas | Reikšmė |
|---|---|---|
| Sekundė0–59 | ||
| Minutė0–59 | ||
| Valanda0–23 | ||
| Mėnesio diena1–31, L | ||
| Mėnuo1–12 arba JAN–DEC | ||
| Savaitės diena0–7 (0 ir 7 = sekmadienis) arba SUN–SAT |
Kiti paleidimai
Kiti formatai
- crontab eilutė
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Kaip sudaryti cron išraišką
- Įrašyk ar įklijuok išraišką į Cron išraiška arba pasirink ją iš Šablonai. Makrokomandos, pavyzdžiui,
@dailyar@weekly, taip pat priimamos. - Arba naudok Konstruktorius: kiekvienam laukui pasirink Režimas (Kas, Kas N, Konkrečios reikšmės, Intervalas ar Kita) ir užpildyk Reikšmė. Išraiška atsinaujina tau dirbant, o pakeitus išraišką atsinaujina konstruktorius.
- Pažymėk Pridėti sekundžių lauką (6 laukai), jei tavo planuoklis palaiko sekundes.
- Perskaityk tvarkaraštį skiltyje Paprastais žodžiais, tada peržiūrėk sąrašą Kiti paleidimai. Pasirink užduotį vykdančio serverio Laiko juosta ir Kiek rodyti paleidimų.
- Nukopijuok išraišką mygtuku Kopijuoti arba naudok vieną iš Kiti formatai.
Tvarkaraščio aprašymas paprastais žodžiais pateikiamas anglų kalba: lietuviškos šios bibliotekos kalbos nėra. Laiko ir datų formatai kitų paleidimų sąraše naudoja puslapio kalbą. Klaidos paaiškinamos laukas po lauko, pavyzdžiui, „Minutė: 61 už ribų (0–59)“, todėl tiksliai žinai, ką taisyti.
Penki cron laukai
Standartinė (Vixie) cron eilutė turi penkis laukus, tada komandą:
| Laukas | Leidžiamos reikšmės |
|---|---|
| Minutė | 0–59 |
| Valanda | 0–23 |
| Mėnesio diena | 1–31 |
| Mėnuo | 1–12 arba JAN–DEC |
| Savaitės diena | 0–7 (0 ir 7 yra sekmadienis) arba SUN–SAT |
Kiekvienas laukas priima * (kiekviena reikšmė), sąrašą 1,15, intervalą 9-17, žingsnį */15 (kas 15 vienetų) arba intervalą su žingsniu 0-30/10. Taigi */15 9-17 * * 1-5 reiškia kas 15 minučių nuo 9:00 iki 17:45, nuo pirmadienio iki penktadienio.
Viena taisyklė daug ką nustebina: kai apribotos ir Mėnesio diena, ir Savaitės diena, klasikinis cron veikia, kai atitinka bent viena iš jų. 0 0 13 * 5 vykdoma kiekvieną 13 dieną ir kiekvieną penktadienį, o ne tik penktadienį, patekusį į 13 d. Tokiu atveju įrankis rodo įspėjimą.
Kito paleidimo laikai ir laiko juostos
Cron naudoja mašinos laikrodį arba crontab nustatymą CRON_TZ/TZ. Sąrašas Kiti paleidimai skaičiuojamas pasirinktai laiko juostai, įskaitant vasaros laiko pokyčius: pavasarį užduotis, nustatyta 2:30, gali būti praleista, o rudenį, priklausomai nuo realizacijos, gali įvykti vieną ar du kartus. Užduotims, kurios turi įvykti lygiai kartą, rinkis laikus ne 1:00–3:00 intervale arba naudok UTC.
Vixie cron, systemd laikmačiai, Quartz ir AWS
- systemd laikmačiai naudoja
OnCalendar=su kitokia sintakse:Mon..Fri *-*-* 09..17:00/15:00. Savaitės dienos ir datos sąlygos jungiamos per IR, o ne per ARBA, todėl kai kurios cron išraiškos tikslaus atitikmens neturi. - Quartz ir Spring pirmą deda sekundžių lauką ir gali pridėti metų lauką. Vienas iš dviejų dienų laukų turi būti
?, o Quartz savaitės dienas numeruoja 1–7 nuo sekmadienio, skirtingai nei cron 0–6. Įrankis savaitės dienas rašo pavadinimais (MON-FRI), kad išvengtų šių spąstų. - AWS EventBridge naudoja
cron(minutės valandos diena mėnuo savaitės_diena metai): šeši laukai, be sekundžių,?viename dienos lauke ir metai gale.
Standartinis cron sekundžių lauko neturi. Šešių laukų formą su sekundėmis palaiko daug bibliotekų (node-cron, Spring, Quartz), bet ne sistemos crontab.
Dažnai užduodami klausimai
Kaip vykdyti užduotį kas 5 minutes?
Naudok */5 * * * *. Užduotis vykdoma kiekvienos valandos 0, 5, 10… minutę.
Kaip vykdyti užduotį paskutinę mėnesio dieną?
Daugelis planuoklių priima L mėnesio dienos lauke: 0 18 L * *. Su paprastu Vixie cron vykdyk kasdien 28–31 dienomis, o scenarijuje patikrink, ar rytoj yra 1 diena.
Ką daro @reboot?
Jis vykdo komandą vieną kartą, kai paleidžiamas cron demonas. Jis neturi tvarkaraščio, todėl įrankis negali išvardyti jo paleidimų.
Kodėl mano užduotis nevykdoma rodytu laiku?
Patikrink serverio laiko juostą, naudotojo crontab ir /etc/crontab (kuriame yra papildomas naudotojo laukas) skirtumą bei PATH: cron startuoja su minimalia aplinka.
Ar sekmadienis yra 0, ar 7?
Abu. Savaitės dienos lauke 0 ir 7 reiškia sekmadienį, 1 – pirmadienį, o 6 – šeštadienį.
Susiję įrankiai
- Unix laiko žymos keitiklis Konvertuok Unix laiko žymas sekundėmis ar milisekundėmis į skaitomas datas vietiniu laiku, UTC ir ISO 8601 formatu ir atgal į epoch laiką.
- Laiko juostų keitiklis Konvertuok datą ir laiką iš vienos laiko juostos į kelias kitas vienu metu, vasaros laiką įskaito automatiškai. Ieškok bet kurio miesto ar IANA laiko juostos.
- Chmod skaičiuoklė Konvertuok Unix failų teises tarp žymimųjų langelių, aštuntainio (755) ir simbolinio (rwxr-xr-x) užrašo, su setuid, setgid, sticky ir chmod komandomis.