Cron generator izraza
Izradi cron izraz polje po polje, pročitaj ga običnim riječima, vidi sljedeća pokretanja u bilo kojoj vremenskoj zoni i pretvori ga u systemd, Quartz ili AWS.
Običnim riječima
Postavljeni su i dan u mjesecu i dan u tjednu: klasični cron pokreće zadatak kad se podudara JEDNO od to dvoje (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 tjednu0–7 (0 i 7 = nedjelja) ili SUN–SAT |
Sljedeća pokretanja
Ostali formati
- crontab redak
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Kako izraditi cron izraz
- Upiši ili zalijepi izraz u Cron izraz ili odaberi jedan iz Predlošci. Prihvaćaju se i makronaredbe poput
@dailyili@weekly. - Ili upotrijebi Graditelj: za svako polje odaberi Način (Svaki, Svakih N, Određene vrijednosti, Raspon ili Prilagođeno) i ispuni Vrijednost. Izraz se osvježava usput, a uređivanje izraza osvježava graditelj.
- Označi Dodaj polje sekundi (6 polja) ako tvoj planer podržava sekunde.
- Pročitaj raspored Običnim riječima (na jeziku stranice kad ga biblioteka za opis podržava, inače na engleskom), zatim provjeri popis Sljedeća pokretanja. Odaberi Vremenska zona poslužitelja na kojem se zadatak izvodi i Koliko pokretanja popisati.
- Kopiraj izraz gumbom Kopiraj ili upotrijebi jedan od Ostali formati.
Greške se objašnjavaju polje po polje, na primjer „Minuta: 61 je izvan raspona (0–59)“, pa točno znaš što treba popraviti.
Pet cron polja
Standardni (Vixie) cron redak ima pet polja, zatim naredbu:
| Polje | Dopuštene vrijednosti |
|---|---|
| Minuta | 0–59 |
| Sat | 0–23 |
| Dan u mjesecu | 1–31 |
| Mjesec | 1–12 ili JAN–DEC |
| Dan u tjednu | 0–7 (0 i 7 su nedjelja) ili SUN–SAT |
Svako polje prihvaća * (svaka vrijednost), popis 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 tjednu, klasični cron pokreće zadatak kad se podudara bilo koje od to dvoje. 0 0 13 * 5 izvodi se svakog 13. i svakog petka, a ne samo petkom 13. U tom slučaju alat prikazuje upozorenje.
Vremena sljedećih pokretanja i vremenske zone
Cron koristi sat računala ili postavku CRON_TZ/TZ u crontabu. Popis Sljedeća pokretanja izračunava 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, ovisno o implementaciji, može izvršiti jednom ili dvaput. Za zadatke koji se moraju izvršiti točno jednom radije biraj vrijeme izvan 1:00–3:00 ili koristi UTC.
Vixie cron, systemd timeri, Quartz i AWS
- systemd timeri koriste
OnCalendar=s drukčijom sintaksom:Mon..Fri *-*-* 09..17:00/15:00. Uvjeti dana u tjednu i datuma kombiniraju se s I, a ne s ILI, pa neki cron izrazi nemaju točan ekvivalent. - Quartz i Spring na prvo mjesto stavljaju polje sekundi i mogu dodati polje godine. Jedno od dva polja dana mora biti
?, a Quartz dane u tjednu broji od 1 do 7 počevši od nedjelje, za razliku od cronovih 0–6. Alat dane u tjednu piše nazivima (MON-FRI) kako bi izbjegao tu zamku. - AWS EventBridge koristi
cron(minute sati dan mjesec dan-u-tjednu godina): šest polja, bez sekundi,?u jednom od polja dana i godinu na kraju.
Standardni cron nema polje sekundi. Oblik sa 6 polja i sekundama podržavaju mnoge biblioteke (node-cron, Spring, Quartz), ali ne i sistemski crontab.
Opis rasporeda običnim riječima dostupan je na hrvatskom. Vremena sljedećih pokretanja prikazuju se u formatu tvog jezika, a sve se izračunava lokalno u tvom pregledniku.
Česta pitanja
Kako pokrenuti zadatak svakih 5 minuta?
Upotrijebi */5 * * * *. Zadatak se izvodi u minutama 0, 5, 10… svakog sata.
Kako pokrenuti zadatak zadnjeg dana u mjesecu?
Mnogi planeri prihvaćaju L u polju dana u mjesecu: 0 18 L * *. S običnim Vixie cronom izvršavaj svaki dan od 28. do 31. i u skripti provjeri je li sutra 1.
Što radi @reboot?
Izvršava naredbu jednom, kad se pokrene cron daemon. Nema rasporeda, pa alat za njega ne može popisati vremena izvođenja.
Zašto se moj zadatak ne izvršava u prikazano vrijeme?
Provjeri vremensku zonu poslužitelja, korisnikov crontab nasuprot /etc/crontab (koji ima dodatno polje korisnika) i PATH: cron se pokreće s minimalnim okruženjem.
Je li nedjelja 0 ili 7?
Oboje. U polju dana u tjednu 0 i 7 znače nedjelju, 1 je ponedjeljak, a 6 subota.
Slični alati
- Pretvarač Unix vremenske oznake Pretvori Unix vremenske oznake u sekundama ili milisekundama u čitljive datume u lokalnom vremenu, UTC-u i ISO 8601, a svaki datum vrati 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. Traži bilo koju IANA zonu ili grad.
- Chmod kalkulator Pretvaraj Unix dozvole datoteka između potvrdnih okvira, oktalnog (755) i simboličkog (rwxr-xr-x) zapisa, uz setuid, setgid, sticky bit i gotove chmod naredbe.