Generator cron izraza
Izgradi cron izraz polje po polje, pročitaj ga običnim rečima, vidi sledeća izvršavanja u bilo kojoj vremenskoj zoni i pretvori ga u systemd, Quartz ili AWS.
Običnim rečima
Podešeni su i dan u mesecu i dan u nedelji: klasični cron se izvršava kad se poklopi BILO KOJI od njih (ne oba).
Graditelj
| Polje | Režim | Vrednost |
|---|---|---|
| Sekunda0–59 | ||
| Minut0–59 | ||
| Sat0–23 | ||
| Dan u mesecu1–31, L | ||
| Mesec1–12 ili JAN–DEC | ||
| Dan u nedelji0–7 (0 i 7 = nedelja) ili SUN–SAT |
Sledeća izvršavanja
Drugi formati
- crontab red
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Kako da izgradiš cron izraz
- Upiši ili nalepi izraz u Cron izraz ili izaberi jedan iz Gotova podešavanja. Prihvataju se i makroi poput
@dailyili@weekly. - Ili koristi Graditelj: za svako polje izaberi Režim (Svaki, Svakih N, Određene vrednosti, Opseg ili Prilagođeno) i popuni Vrednost. Izraz se menja dok radiš, a izmena izraza menja graditelj.
- Označi Dodaj polje za sekunde (6 polja) ako tvoj planer podržava sekunde.
- Pročitaj raspored u odeljku Običnim rečima (na jeziku stranice kad to biblioteka za opis podržava), pa proveri listu Sledeća izvršavanja. Izaberi Vremenska zona servera koji izvršava zadatak i Koliko izvršavanja da se prikaže.
- Kopiraj izraz dugmetom Kopiraj ili koristi neki od formata iz odeljka Drugi formati.
Greške se objašnjavaju polje po polje, na primer „Minut: 61 je van opsega (0–59)“, pa tačno znaš šta da ispraviš.
Pet cron polja
Standardni (Vixie) cron red ima pet polja, pa komandu:
| Polje | Dozvoljene vrednosti |
|---|---|
| Minut | 0–59 |
| Sat | 0–23 |
| Dan u mesecu | 1–31 |
| Mesec | 1–12 ili JAN–DEC |
| Dan u nedelji | 0–7 (0 i 7 su nedelja) ili SUN–SAT |
Svako polje prihvata * (svaku vrednost), listu 1,15, opseg 9-17, korak */15 (svakih 15 jedinica) ili opseg sa korakom 0-30/10. Tako */15 9-17 * * 1-5 znači svakih 15 minuta od 9:00 do 17:45, od ponedeljka do petka.
Jedno pravilo mnoge iznenadi: kad su ograničeni i Dan u mesecu i Dan u nedelji, klasični cron se izvršava kad se poklopi bilo koji od njih. 0 0 13 * 5 se izvršava svakog 13. i svakog petka, a ne samo petkom 13. U tom slučaju alat prikazuje upozorenje.
Sledeća vremena izvršavanja i vremenske zone
Cron koristi sat mašine ili podešavanje CRON_TZ/TZ u crontabu. Lista Sledeća izvršavanja računa se za vremensku zonu koju izabereš, uključujući promene letnjeg računanja vremena: pri prolećnoj promeni zadatak podešen na 2:30 može biti preskočen, a u jesen se, zavisno od implementacije, može izvršiti jednom ili dvaput. Za zadatke koji moraju da se izvrše tačno jednom, radije biraj vreme van intervala 1:00–3:00 ili koristi UTC.
Vixie cron, systemd tajmeri, Quartz i AWS
- systemd tajmeri koriste
OnCalendar=sa drugačijom sintaksom:Mon..Fri *-*-* 09..17:00/15:00. Uslovi za dan u nedelji i datum kombinuju se sa I, a ne sa ILI, pa neki cron izrazi nemaju tačan ekvivalent. - Quartz i Spring stavljaju polje za sekunde na početak i mogu dodati polje za godinu. Jedno od dva polja za dan mora biti
?, a Quartz numeriše dane u nedelji od 1 do 7 počevši od nedelje, za razliku od cronovog 0–6. Alat zapisuje dane u nedelji imenima (MON-FRI) da bi izbegao tu zamku. - AWS EventBridge koristi
cron(minuti sati dan mesec dan-u-nedelji godina): šest polja, bez sekundi, sa?u jednom polju za dan i godinom na kraju.
Standardni cron nema polje za sekunde. Oblik sa 6 polja i sekundama podržavaju mnoge biblioteke (node-cron, Spring, Quartz), ali ne i sistemski crontab.
Česta pitanja
Kako da pokrenem zadatak svakih 5 minuta?
Koristi */5 * * * *. Zadatak se izvršava u minutima 0, 5, 10… svakog sata.
Kako da pokrenem zadatak poslednjeg dana u mesecu?
Mnogi planeri prihvataju L u polju dana u mesecu: 0 18 L * *. Sa običnim Vixie cronom, izvršavaj svakog dana od 28. do 31. i u skripti proveri da li je sutra prvi.
Šta radi @reboot?
Izvršava komandu jednom, kad se pokrene cron daemon. Nema raspored, pa alat ne može da navede vremena izvršavanja za njega.
Zašto se moj zadatak ne izvršava u prikazano vreme?
Proveri vremensku zonu servera, korisnikov crontab naspram /etc/crontab (koji ima dodatno polje za korisnika) i PATH: cron se pokreće sa minimalnim okruženjem.
Da li je nedelja 0 ili 7?
Oba. U polju dana u nedelji 0 i 7 znače nedelju, 1 je ponedeljak, a 6 subota.
Srodni alati
- Unix timestamp pretvarač Pretvori Unix timestamp u sekundama ili milisekundama u čitljiv datum u lokalnom vremenu, UTC i ISO 8601, i pretvori bilo koji datum nazad u epoch vreme.
- Pretvarač vremenskih zona Pretvori datum i vreme iz jedne vremenske zone u nekoliko drugih odjednom, uz automatsko letnje računanje vremena. Traži bilo koju IANA zonu ili grad.
- Chmod kalkulator Pretvaraj Unix dozvole fajlova između polja za potvrdu, oktalnog (755) i simboličkog (rwxr-xr-x) zapisa, sa setuid, setgid, sticky bitom i chmod komandama.