Generator cron izraza
Izradi cron izraz polje po polje, pročitaj ga običnim riječima, vidi sljedeća izvršavanja u bilo kojoj vremenskoj zoni i pretvori ga u systemd, Quartz ili AWS.
Običnim riječima
Zadani su i dan u mjesecu i dan u sedmici: klasični cron se izvršava kad odgovara BILO KOJI od njih (ne oba).
Graditelj
| Polje | Način | Vrijednost |
|---|---|---|
| Sekunda0–59 | ||
| Minuta0–59 | ||
| Sat0–23 | ||
| Dan u mjesecu1–31, L | ||
| Mjesec1–12 ili JAN–DEC | ||
| Dan u sedmici0–7 (0 i 7 = nedjelja) ili SUN–SAT |
Sljedeća izvršavanja
Drugi formati
- crontab red
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Kako izraditi cron izraz
- Upiši ili zalijepi izraz u Cron izraz ili odaberi jedan iz Postavki. Prihvataju se i makroi poput
@dailyili@weekly. - Ili koristi Graditelj: za svako polje odaberi Način (Svaki, Svakih N, Određene vrijednosti, Raspon ili Prilagođeno) i popuni Vrijednost. Izraz se ažurira dok radiš, a izmjena izraza ažurira graditelj.
- Označi Dodaj polje za sekunde (6 polja) ako tvoj planer podržava sekunde.
- Pročitaj raspored Običnim riječima, pa provjeri listu Sljedeća izvršavanja. Odaberi Vremensku zonu servera koji izvršava zadatak i Koliko izvršavanja treba prikazati.
- Kopiraj izraz dugmetom Kopiraj ili koristi neki od Drugih formata.
Opis rasporeda običnim riječima generiše se pomoću hrvatske jezične postavke biblioteke cronstrue, jer za bosanski ne postoji vlastita, pa se može razlikovati od uobičajenih bosanskih izraza. Datumi sljedećih izvršavanja prikazuju se prema jeziku stranice.
Greške se objašnjavaju polje po polje, na primjer „Minuta: 61 je izvan raspona (0–59)“, pa tačno znaš šta treba ispraviti.
Pet cron polja
Standardni (Vixie) cron red ima pet polja, a zatim naredbu:
| Polje | Dozvoljene vrijednosti |
|---|---|
| Minuta | 0–59 |
| Sat | 0–23 |
| Dan u mjesecu | 1–31 |
| Mjesec | 1–12 ili JAN–DEC |
| Dan u sedmici | 0–7 (0 i 7 su nedjelja) ili SUN–SAT |
Svako polje prihvata * (svaka vrijednost), listu 1,15, raspon 9-17, korak */15 (svakih 15 jedinica) ili raspon s korakom 0-30/10. Tako */15 9-17 * * 1-5 znači svakih 15 minuta od 9:00 do 17:45, od ponedjeljka do petka.
Jedno pravilo mnoge iznenadi: kad su ograničeni i Dan u mjesecu i Dan u sedmici, klasični cron se izvršava kad odgovara 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.
Sljedeća izvršavanja i vremenske zone
Cron koristi sat mašine ili postavku CRON_TZ/TZ u crontabu. Lista Sljedeća izvršavanja računa se za vremensku zonu koju odabereš, uključujući promjene ljetnog računanja vremena: pri proljetnoj promjeni zadatak postavljen 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 se moraju izvršiti tačno jednom radije biraj vrijeme izvan intervala 1:00–3:00 ili koristi UTC.
Vixie cron, systemd tajmeri, Quartz i AWS
- systemd tajmeri koriste
OnCalendar=s drugačijom sintaksom:Mon..Fri *-*-* 09..17:00/15:00. Uslovi za dan u sedmici i datum kombinuju se s AND, a ne OR, pa neki cron izrazi nemaju tačan ekvivalent. - Quartz i Spring stavljaju polje za sekunde na prvo mjesto i mogu dodati polje za godinu. Jedno od dva polja za dan mora biti
?, a Quartz numeriše dane u sedmici od 1 do 7 počevši od nedjelje, za razliku od crona (0–6). Alat zapisuje dane u sedmici kao nazive (MON-FRI) da izbjegne tu zamku. - AWS EventBridge koristi
cron(minute sati dan mjesec dan-u-sedmici godina): šest polja, bez sekundi,?u jednom polju za dan i godinu 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 pokrenuti zadatak svakih 5 minuta?
Koristi */5 * * * *. Zadatak se izvršava u minutama 0, 5, 10… svakog sata.
Kako pokrenuti zadatak posljednjeg dana u mjesecu?
Mnogi planeri prihvataju L u polju dana u mjesecu: 0 18 L * *. S običnim Vixie cronom izvršavaj svakodnevno na dane 28–31 i u skripti provjeri je li sutra prvi.
Šta radi @reboot?
Izvršava naredbu jednom, kad se pokrene cron daemon. Nema raspored, pa alat za njega ne može prikazati vremena izvršavanja.
Zašto se moj zadatak ne izvršava u prikazano vrijeme?
Provjeri vremensku zonu servera, korisnički crontab naspram /etc/crontab (koji ima dodatno polje za korisnika) i PATH: cron se pokreće s minimalnim okruženjem.
Je li nedjelja 0 ili 7?
Oba. U polju dana u sedmici 0 i 7 znače nedjelju, 1 je ponedjeljak, a 6 subota.
Srodni alati
- Unix timestamp pretvarač Pretvori Unix timestamp u sekundama ili milisekundama u čitljiv datum u lokalnom vremenu, UTC-u i ISO 8601 formatu, a svaki datum nazad u epoch vrijeme.
- Pretvarač vremenskih zona Pretvori datum i vrijeme iz jedne vremenske zone u više drugih odjednom, uz automatsko ljetno računanje vremena. Pretraži bilo koji IANA grad ili zonu.
- Chmod kalkulator Pretvaraj Unix dozvole datoteka između kvačica, oktalnog (755) i simboličkog (rwxr-xr-x) zapisa, uz setuid, setgid, sticky bit i gotove chmod naredbe.