§

Introdu o expresie cron sau selectează o presetare mai jos.

Presetări rapide:
§

Următoarele 10 momente de executare

cron

Programarea în limbaj uman apare aici...

    §

    Constructor expresii

    Inginerii din SUA și Marea Britanie întâlnesc sintaxa cron la fiecare nivel al stivei: AWS EventBridge Scheduler o acceptă pentru declanșatoare Lambda, resursele Kubernetes CronJob folosesc aceeași formă cu cinci câmpuri pe fiecare cluster EKS și GKE, iar GitHub Actions o citește direct din `.github/workflows/*.yml`. Problema este că niciuna dintre aceste platforme nu este de acord asupra detaliilor. EventBridge adaugă un al șaselea câmp pentru an și solicită `?` în loc de `*` pe unul dintre câmpurile de zi. Kubernetes rulează în UTC, cu excepția cazului în care setezi explicit `spec.timeZone`. GitHub Actions rulează în UTC, punct, fără nicio suprascriere. Acest instrument analizează orice variantă pe care o lipești, arată următoarele zece momente de executare în zona IANA pe care o alegi și îți permite să construiești o expresie nouă câmp cu câmp, astfel încât să poți verifica programarea înainte de a o livra în producție.

    Ce este o expresie cron?

    O expresie cron este un șir compact de programare care spune unui programator de sarcini exact când să declanșeze o sarcină. Formatul s-a născut în 1975 în interiorul daemonului cron Unix V7 și s-a schimbat abia de atunci — aceeași gramatică cu cinci câmpuri apare astăzi în Kubernetes CronJobs, AWS EventBridge, fluxurile de lucru GitHub Actions, Google Cloud Scheduler, GitLab CI, conductele Jenkins și binarul crontab încă livrat cu fiecare distribuție Linux. Gramatica înghesuie multă semnificație în aproximativ treisprezece caractere, motiv pentru care un analizator care o convertește în engleză simplă face diferența între o implementare încrezătoare și o revenire la 3 AM.

    Cum funcționează o expresie cron?

    O expresie cron standard are cinci câmpuri separate prin spații care definesc împreună o programare repetitivă. Motorul verifică ceasul curent al sistemului în raport cu expresia în fiecare minut și declanșează sarcina când toate cele cinci câmpuri se potrivesc. Câmpurile, de la stânga la dreapta:

    1. Minut (0–59). Ce minut din oră rulează sarcina. 0 înseamnă la fix, 30 înseamnă la jumătate, */5 înseamnă la fiecare cinci minute (00, 05, 10, ...), iar 15,45 înseamnă la și un sfert și fără un sfert.
    2. Oră (0–23). Ce oră a zilei pe ceasul de 24 de ore. 0 este miezul nopții, 9 este 9 AM, 17 este 5 PM. Intervalele (9-17 pentru orele de lucru) și valorile de pas (*/2 pentru fiecare a doua oră) funcționează la fel ca pentru minute.
    3. Zi a lunii (1–31). Ce zi calendaristică să ruleze. 1 înseamnă prima zi a lunii, * înseamnă în fiecare zi, 1,15 înseamnă ziua 1 și 15. Ai grijă cu 31 — sare în tăcere peste lunile care nu au o zi 31.
    4. Lună (1–12 sau JAN–DEC). Ce luni să ruleze. * înseamnă în fiecare lună, 1,7 înseamnă ianuarie și iulie, 1-3 înseamnă doar T1. Numele de luni cu trei litere nu țin cont de majuscule în majoritatea implementărilor.
    5. Zi a săptămânii (0–7, unde atât 0 cât și 7 înseamnă duminică). Restricționează declanșarea la anumite zile lucrătoare. 1-5 este de luni până vineri, 0,6 este weekendul, LUN-VIN funcționează în majoritatea analizatoarelor. Când atât ziua lunii, cât și ziua săptămânii sunt setate la valori specifice, cronul clasic declanșează la oricare potrivire (SAU logic), ceea ce surprinde oamenii de fiecare dată.

    De ce să folosești un analizator de expresii cron?

    • Prinde citirea greșită în tăcere înainte de implementare. Expresia `0 2 */3 * *` declanșează la 2 AM în fiecare a treia zi, nu la fiecare trei minute — lipește-o aici și vei vedea asta în engleză simplă înainte de a o livra în producție.
    • Majoritatea programatorilor cloud rulează în UTC în mod implicit. Previzualizarea următoarelor zece momente de executare în fusul tău local scoate la suprafață deviația de o oră a DST înainte de a pagina pe cineva la 3 AM.
    • Scurtăturile precum `@daily`, `@weekly` și `@monthly` sunt convenabile, dar ambigue. Analizatorul îți arată forma subiacentă cu cinci câmpuri, astfel încât să știi exact ce a fost programat.
    • Constructorul câmp cu câmp îți permite să compui o programare câte o coloană odată și să urmărești descrierea umană actualizându-se live, ceea ce este mult mai rapid decât să recitești pagina de manual cron pentru a zecea oară.

    Unde sunt folosite expresiile cron?

    Sintaxa cron apare oriunde o sarcină trebuie să se repete pe un ceas. Trei dintre cele mai comune suprafețe, cu exact capcana pentru care fiecare este renumit:

    • Programări de backup. Intrarea clasică `crontab -e` care descarcă o bază de date în S3 la 2 AM în fiecare noapte sau rotește o arhivă `pg_dump` pe data de 1 a fiecărei luni. O linie precum `0 2 * * * /usr/local/bin/backup.sh` a fost livrată pe mai multe servere Linux decât orice altă linie de cron din istorie. Pune minutul și ora corect, redirecționează stderr undeva durabil și ai înlocuit o listă de verificare manuală cu un script de tip „declanșează și uită”.
    • Declanșatoare `schedule` GitHub Actions. Cheia `on.schedule.cron` în `.github/workflows/*.yml` acceptă cron standard cu cinci câmpuri, dar sarcina rulează întotdeauna în UTC, iar GitHub va sări în tăcere peste un moment de executare dacă coada de runneri este ocupată. Model comun: `cron: '0 9 * * 1-5'` pentru a trimite un digest de luni până vineri la 9 AM UTC. Previzualizează-l aici în fusul tău local mai întâi, astfel încât să nu promiți un digest la 9 AM Londra care aterizează efectiv la 10 AM în BST.
    • AWS EventBridge Scheduler. Expresiile cron EventBridge iau un al șaselea câmp pentru an și necesită `?` în loc de `*` fie în câmpul zilei lunii, fie al zilei săptămânii — `cron(0 9 ? * MON-FRI *)` este traducerea EventBridge a cronului standard de 9 AM în zilele lucrătoare. Folosit pentru invocări Lambda programate, rulări de sarcini ECS și porniri de mașini de stare Step Functions; nealinierea cu sintaxa cron clasică este sursa numărul unu de erori `ValidationException` în implementările CloudFormation.

    Cum arată o expresie cron reală?

    Ia 0 9 * * 1-5 — declanșează la 9:00 AM, în fiecare zi lucrătoare. Citind câmpurile de la stânga la dreapta: 0 este minutul zero al orei, 9 este 9 AM pe ceasul de 24 de ore, * pe ziua lunii înseamnă în fiecare zi calendaristică, * pe lună înseamnă în fiecare lună, iar 1-5 pe ziua săptămânii restricționează declanșarea de luni până vineri (unde 1 = luni în numerotarea cron standard). Lipește asta în câmpul de intrare de mai sus și analizatorul confirmă La 09:00 AM, de luni până vineri cu următoarele zece date de declanșare redate în orice zonă IANA alegi. Aceeași intenție în sintaxa AWS EventBridge este cron(0 9 ? * MON-FRI *) — observă câmpul anului la sfârșit și ? acolo unde cronul standard ar folosi *. Aceeași intenție ca o expresie Quartz (șase câmpuri cu secunde la început) este 0 0 9 ? * MON-FRI. Trei platforme diferite, trei forme de suprafață diferite, o singură programare subiacentă.

    Expresiile cron sunt neiertătoare exact într-un singur mod: o greșeală de tipar îți oferă o programare sintactic validă care declanșează la momentul greșit, fără nicio eroare de prins în revizuirea codului. Citirea `0 0 1 * *` și știind că rulează la miezul nopții pe data de 1 a fiecărei luni, nu pe 1 ianuarie, necesită practică. Analizatorul de mai sus transformă această practică într-o verificare de bun simț de zece secunde — lipește expresia, citește engleza, scanează următoarele zece momente de executare în fusul tău local și livrează YAML-ul știind că linia cron face efectiv ceea ce spune mesajul de commit că face.

    Care este diferența între cron cu 5 câmpuri și 6 câmpuri?

    Cronul cu cinci câmpuri este gramatica Unix clasică cu rezoluție de un minut. Cronul cu șase câmpuri adaugă o coloană de secunde la început pentru programare sub-minut — folosit de Quartz și @Scheduled al Spring. AWS EventBridge folosește și șase câmpuri, dar coloana sa suplimentară este un an la sfârșit, nu secunde.

    Ce înseamnă @hourly, @daily și @weekly?

    Pseudonimele Vixie-cron introduse în 1987. @hourly = 0 * * * *, @daily = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. @reboot declanșează o dată la pornire. GitHub Actions și EventBridge resping aceste pseudonime.

    Este duminica ziua 0 sau ziua 7 în cron?

    Ambele, în cron Vixie clasic — 0 și 7 sunt acceptate, astfel încât intervale precum 5-7 să se citească natural ca vineri-to-duminică. Luni este întotdeauna 1, sâmbătă este întotdeauna 6. Quartz și AWS EventBridge folosesc o convenție diferită: 1-7 cu duminica ca 1. Verifică documentația platformei înainte de a presupune.

    Cum gestionează cron ora de vară?

    Depinde de fusul orar al motorului. În UTC (implicit pe EventBridge, Kubernetes și GitHub Actions), DST nu există. Într-un fus orar local DST, cronul Vixie clasic sare peste sarcini în timpul golului de înaintare în primăvară și le rulează de două ori în timpul revenirii în toamnă; temporizatoarele systemd declanșează exact o dată.