Arvuta cron-avaldise järgmised käivitused
- Töölaud
- Dokumentatsioon
- API
Mis on cron avaldis?
Croni avaldis on lühike string, mis kirjeldab kordumist aja jooksul. The
Unixist päritud vorming sisaldab viit tühikutega eraldatud välja: minut, tund,
kuu päev, kuu ja nädalapäev. See süntaks sündis koos deemoniga
cron autor Brian Kernighan 1970. aastatel, seejärel üldistanud Vixie cron
(1987), mida toetavad kõik kaasaegsed Linuxi ja macOS-i distributsioonid. Tänapäeval on sama süntaks
leidub enamikus pilvegraafikutes (AWS EventBridge, GCP Cloud Scheduler, Azure Logic
Rakendused) ja CI/CD (GitHub Actions, GitLab CI, Jenkins).
┌──── minut (0–59)
│ ┌── tund (0-23)
│ │ ┌── kuu päev (1-31)
│ │ │ ┌── kuud (1.-12. jaan.-dets.)
│ │ │ │ ┌── nädalapäev (0–7 või P–LA, 0 ja 7 = pühapäev)
│ │ │ │ │
* * * * *
Hästi vormistatud croni avaldis määratleb seega täpse croni ajakava: iga väli võib olla fikseeritud väärtus, vahemik, loend, samm või tärn, mis sobib kõigega. Crontab-avaldise kompaktsus on selle tugevus, aga ka see, mis selle teeb cron-dekooder on kavatsuse visuaalseks kinnitamiseks hädavajalik. See on kogu asja mõte sellest croni muundurist: koostage loetav croni seletus ja nende loend järgmised hukkamised.
Krooni avaldise anatoomia
Viiel väljal on ühine grammatika. Siin on piirangud, mida aktsepteerivad iga veeru a Standardne crontab avaldis:
- Minut:
0–59. - Aeg:
0-23, 24-tunnine vorming. - Kuupäev:
1-31. - Kuu:
1-12või tekstilühendidJAN,VEEBAR,MAR,APR,MAI,JUN,JUL,AUG,SEP,OCT,NOV,DEC. - Nädalapäev:
0-7, kus0ja7mõlemad tähistavad pühapäeva või lühendeidSUN,MON,TUE,KES,TRU,R,LAP.
Erimärgid, mida jagavad viis välja:
*: mis tahes väärtus, vastab kõigile väljal lubatud väärtustele.,: diskreetne loend, näiteks minutiväljal1,15,30.-: kaasav vahemik, näiteks9–17kontoritundide jaoks./: samm, näiteks*/15= iga 15 ühiku järel või0-30/5= iga 5 minuti järel vahemikus 0 kuni 30.
Quartz Extensions (Java, AWS EventBridge, Spring): grammatika suureneb 6-ni või 7-ni
väljad, mille päises on sekundite veerg (0–59) ja mõnikord veerg
Lõppaasta aasta (1970–2099). Quartz tutvustab ka ? (pole spetsiifiline
väärtus, et lahutada kuupäev ja nädalapäev), L (viimane: kuu viimane päev,
või eelmisel reedel 5L), W (lähim tööpäev) ja #
(N. kuu nädalapäev, näiteks 2#3 3. esmaspäev). Väljend
Kvarts ei ühildu üldiselt UNIX crontabiga ja vastupidi: see on peamine
veaallikas croni avaldise ühelt platvormilt teisele kopeerimisel.
Miks dekodeerida cron-avaldist?
0 0 * * * lugemine on kiire. */7 2-5 1,15 * 1-5 lugemine on palju väiksem. Millal
avaldis on väljaspool triviaalset, suureneb tõlgendusvea oht ja cron dekodeerimine
muutub omaette läbivaatamise etapiks.
- Silumise tootmine: saate aru, miks ülesanne käivitati kell 03:17 ja mitte kell 03:00 või tuvastada kahe töö kattumine.
- Koodi ülevaatus: kontrollige, kas tõmbetaotlusena edastatud ajakava teeb seda, mida ta teeb väidab autor, ilma et peaks iga sümboli semantikat pähe õppima.
- Ajakavandaja audit: vaadake üle Linuxi croni tööd
/etc/crontabja/etc/cron.d/, Jenkinsi päästikud, Kubernetes CronJobispec.schedule, reeglid AWS EventBridge ja GCP Cloud Scheduler tööd. - Pärandmigreerimine: jätkake ajaloolist
/etc/crontabilma dokumentatsiooni ja koostage enne infrastruktuuri muutmist ülesannete kaart uuesti. - Lõpetamine: lubage uuel arendajal crontab uuesti lugeda ilma et peaksite üleöö kõiki erimärke õppima.
Kuidas kasutada cron dekoodrit
Tööriistaga crontab avaldise dekodeerimiseks järgitav protseduur:
- Kleebi oma cron-avaldis sisestusväljale (5 välja, mis on eraldatud tühikud).
- Märkige järgmiste arvutatavate täitmiste arv.
- Klõpsake teisenda, et käivitada cron decode: tööriist tagastab inimlause, mis selgitab käivitamist, pluss järgmiste hukkamiste kuupäevaga loend.
- Kontrollige visuaalselt, et kuupäevad vastavad teie kavatsusele (kellaaeg, päev, sagedus).
- Kopeerige väljund kopeerimisnupu abil, et kleepida see piletisse, PR-sse või dokumentatsiooni tehniline.
Tööriist ei paku ainult süntaktilist parsimist: see annab seletuse cron loomulikus keeles, mistõttu on see nii cron dekooder kui ka a ajakava validaator.
Croni väljenduse klassikalised näited
Allolevad mustrid hõlmavad enamikku tootmises ette tulnud croni ajakavadest. Nad kõik kehtivad Linuxi crontabis, Kubernetes CronJobis, GitHub Actionsis ja enamikus rakenduste planeerijad.
| Avaldis | Inimlik lugemine |
|---|---|
* * * * * |
Iga minut |
0 * * * * |
Iga tund terav |
0 0 * * * |
Iga päev südaööl |
0 0 * * 0 |
Igal pühapäeval südaööl |
*/15 * * * * |
Iga 15 minuti järel |
0 9 * * 1-5 |
9.00 esmaspäevast reedeni |
0 0 1 * * |
Iga kuu 1. päeval südaööl |
0 0,12 * * * |
Iga päev südaööl ja keskpäeval |
*/5 9-17 * * 1-5 |
Iga 5 minuti järel tööajal |
30 2 1,15 * * |
Kuu 1. ja 15. päeval kell 2.30 |
Linuxi serveris cron-ülesande täitmiseks muutke kasutaja vahekaarti cron kestast:
# muutke praeguse kasutaja crontab
$ crontab -e
# loetlege olemasolevad ülesanded
$ crontab -l
Lisatud # rea näide: igapäevane varundamine kell 3 öösel
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Näide cron-muunduri väljundist */5 * * * * jaoks:
2026-05-05 00:00:00
2026-05-05 00:05:00
2026-05-05 00:10:00
2026-05-05 00:15:00
2026-05-05 00:20:00
...
Korduma kippuvad küsimused cron-dekoodri kohta
Mis vahe on UNIX cronil ja Quartzil?
UNIX/Vixie cron kasutab 5 välja (minutist nädalapäevani), ilma täpsuseta sekundini ja sellel pole
omapärane mõiste "kuu viimane päev". Quartz (Java, Spring, AWS EventBridge) lisab veeru
sekundid ülaosas, mõnikord veerg aasta all ja mitu sümbolit
(?, L, W, #) puuduvad Linuxi vahekaardilt. A
cron avaldis 6-väljaline kvarts ei ole seetõttu otse kaasaskantav
/etc/crontab ja vastupidi. Meie cron-dekooder sihib 5-vormingut
väljad, mis hõlmab enamikku planeerijatest.
Kuidas käivitada cron töö iga 5 minuti järel?
Minutiväljal oleva sammuga /:
*/5 * * * * /usr/local/bin/check-health.sh
See crontab avaldis käivitab skripti iga minuti 0, 5, 10, 15... minutil
tund, iga päev. Tööaja piiramiseks esmaspäevast reedeni lisage piirangud
kellaaja ja nädalapäeva väljadel: */5 9-17 * * 1-5.
Mida tähendab tärn (*) cron-avaldises?
Tärn tähendab mis tahes väärtust: see vastab välja kõikidele lubatud väärtustele. sisse
0 0 * * *, kolm tärni tähendavad „ükskõik milline kuu päev, mis tahes
kuu, mis tahes nädalapäev. Koos kahe esimese väljaga, mille väärtuseks on määratud 0, me
saab "iga päev keskööl". Tärni saab kombineerida ka sammuga: */15 tolli
minut = iga 15 minuti järel.
Kas Crontabil on ajavöönd?
Vaikimisi on serveri ajavöönd. Linuxi crontabis on see süsteem TZ (sageli UTC VPS-is ja
konteinerid). GitHub Actions sunnib UTC-d. Kubernetes CronJob kasutab kontrolleri ajavööndit,
seadistatav spec.timeZone kaudu alates 1.27. AWS EventBridge hindab avaldisi järgmiselt
UTC. Rakenduste planeerijad (Symfony Scheduler, Quartz, Airflow) võimaldavad sageli määrata a
igale ülesandele pühendatud ajavöönd. Kui kahtlete, kontrollige sihtserveris kuupäeva ja
võrrelda croni muunduri väljundiga.
Cron töö vs käsud: millist valida?
Funktsiooni cron kasutatakse korduva ülesande täitmiseks ajakava järgi. Kasutatakse at
käskluse täitmiseks ainult üks kord antud ajahetkel. Igapäevaseks varundamiseks
logi pööramine või tavaline API kõne, kasutage cron. Ühe toimingu edasilükkamiseks
("taaskäivitage see kasutuselevõtt täna õhtul kell 22.00"), kasutage aadressil:
$ echo "/usr/local/bin/deploy.sh" | kell 22:00
Kuidas testida cron-avaldist ilma seda käivitamata?
See on täpselt selle croni muunduri roll: see arvutab järgmise N
hukkamised praegusest ajast, ilma tööd alustamata. Näete kohe, kas teie
crontab avaldis käivitub ootuspäraselt kell 03:00 või juhuslikult kell 03:17. Et minna kaugemale
palju enne ülesande installimist saate testida ka skripti üksi (bash -x script.sh)
ja kontrollige distributsioonide puhul crontab-faili süntaksit crontab -T-failiga
kes seda toetavad.
Mis juhtub, kui nii kuu- kui ka nädalapäev on määratud?
Vixie cron (Linux) puhul on reegel loogiline VÕI: töö vallandatakse, kui üks või
teinekahest väljast vastab. See on intuitiivne ja vigade allikas. Kvarts kasutab a
JA, sellest tuleneb ka sümboli ? kasutuselevõtt, mis näitab selgesõnaliselt „ei”
piirang”. Üldreeglina parandage ainult üks kahest väljast.
Päringunäide
curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
-H "Content-Type: application/json" \
-d '{"cron":"...","number_next_date":1}'
Sisendskeem
| Väli | Tüüp | Kohustuslik | Vaikimisi |
|---|---|---|---|
cron |
string | ✓ | – |
number_next_date |
integer | ✓ | – |
Lõpp-punktid
GET https://cdrn.fr/api/v1/tools- loetleb kõik saadaolevad tööriistadGET https://cdrn.fr/api/v1/tools/cron-converter- toob selle tööriista skeemiPOST https://cdrn.fr/api/v1/tools/cron-converter/execute- täidab selle tööriista JSON-payloadiga