Kratak odgovor
Cron je vremenski planer na Linux i Unix sistemima, a cron job je jedna zakazana komanda. Raspored ima pet polja: minut, sat, dan u mesecu, mesec i dan u nedelji. Na primer, 0 3 * * * znači svakog dana u 03:00. Na hostingu se cron obično dodaje kroz kontrolni panel: izaberete raspored, unesete punu putanju do komande ili skripte, sačuvate i proverite log posle prvog pokretanja.
Kako se čita cron raspored
text┌──────── minut (0–59) │ ┌────── sat (0–23) │ │ ┌──── dan u mesecu (1–31) │ │ │ ┌── mesec (1–12) │ │ │ │ ┌ dan u nedelji (0–7, nedelja je 0 ili 7) │ │ │ │ │ * * * * * komanda
0 3 * * *— svakog dana u 03:00*/15 * * * *— na svakih 15 minuta30 8 * * 1-5— radnim danima u 08:300 2 1 * *— prvog dana svakog meseca u 02:00
Zvezdica znači „svaka dozvoljena vrednost“. Zato pet zvezdica pokreće posao svakog minuta, ne jednom dnevno. Pre čuvanja pročitajte raspored naglas: minut 0, sat 3, svaki dan, svaki mesec, svaki dan u nedelji.
Praktični primer: pokretanje PHP skripte
Za PHP skriptu je pouzdanije pozvati PHP iz komandne linije i navesti apsolutnu putanju do fajla. Tačne putanje zavise od servera i PHP verzije, pa ih proverite u DirectAdmin panelu ili kod podrške.
shell0 3 * * * /usr/local/bin/php /home/korisnik/domains/vasdomen.rs/private_html/zadatak.php >> /home/korisnik/cron.log 2>&1
Deo >> cron.log 2>&1 dodaje standardni izlaz i greške u log fajl. Bez toga posao može da pada neprimetno. Kada potvrdite da radi, podesite rotaciju ili povremeno obrišite stari log da ne raste bez granice.
Pokretanje URL-a nije isto što i pokretanje skripte
Neki zadaci se pokreću HTTP zahtevom pomoću curl ili wget. To je korisno kada aplikacija nudi poseban zaštićen endpoint, ali javni URL ne treba da omogućava bilo kome da pokrene osetljiv posao.
shell*/15 * * * * curl --fail --silent --show-error 'https://vasdomen.rs/interni-zadatak?token=DUG_NASUMICAN_TOKEN' >> /home/korisnik/cron.log 2>&1
Tajna u URL-u može završiti u logovima i istoriji, pa je bolji lokalni CLI poziv kada aplikacija to podržava. Ako koristite HTTP endpoint, zahtev mora biti autentifikovan, ograničen i napravljen tako da bezbedno podnosi ponovljeno pokretanje.
Cron i WordPress: zašto WP-Cron kasni
WordPress po pravilu koristi WP-Cron, sistem koji proverava zakazane zadatke kada neko otvori sajt. To nije pravi sistemski cron. Na slabo posećenom sajtu zadatak može kasniti jer nema posete koja bi ga pokrenula; na veoma posećenom sajtu provera se može pozivati češće nego što je potrebno.
Za pouzdaniji raspored može se isključiti automatsko pokretanje WP-Cron-a u wp-config.php, a zatim sistemskim cronom pozivati wp-cron.php u razumnom intervalu. Uradite oba koraka zajedno: ako samo isključite WP-Cron, zakazani postovi, emailovi i poslovi plugin-ova mogu prestati da se izvršavaju.
php// wp-config.php define('DISABLE_WP_CRON', true);
shell*/15 * * * * /usr/local/bin/php /home/korisnik/domains/vasdomen.rs/public_html/wp-cron.php > /dev/null 2>&1
Koliko često treba pokretati zadatak
Najkraći interval nije automatski najbolji. Zadatak koji traje dva minuta, a pokreće se svakog minuta, može napraviti više istovremenih procesa i opteretiti nalog. Uskladite učestalost sa stvarnom potrebom i ograničenjima hosting paketa.
- backup: obično jednom dnevno ili prema brzini promene podataka
- izveštaj: jednom dnevno ili nedeljno
- sinhronizacija kataloga: prema tome koliko izvor menja podatke, često na 15–60 minuta
- čišćenje privremenih podataka: dnevno ili nedeljno
- WP-Cron: interval od 5–15 minuta je čest, ali zavisi od funkcija sajta
Kako proveriti da cron zaista radi
- prvo ručno pokrenite istu komandu iz odgovarajućeg okruženja i rešite svaku grešku
- koristite apsolutne putanje jer cron ima skromnije okruženje i drugačiji
PATHod vaše terminalske sesije - privremeno sačuvajte izlaz i greške u log fajl
- ne oslanjajte se samo na postojanje procesa; proverite očekivani rezultat, na primer napravljen backup ili uvezen zapis
- dodajte obaveštenje za kritične poslove i reagujte ako nekoliko uzastopnih izvršavanja ne uspe
Ako ne proveravate rezultat, ne znate da li cron radi. Znate samo da ste sačuvali raspored.
Bezbednosna pravila
- ne stavljajte lozinke i API ključeve direktno u komandu ako postoji bezbedniji konfiguracioni fajl van javnog direktorijuma
- ograničite dozvole skripte i fajlova koje ona pravi
- ne pokrećite posao češće nego što hosting dozvoljava
- sprečite paralelno pokretanje ako prethodna instanca možda još radi, na primer zaključavanjem pomoću
flockkada je dostupan - redovno proveravajte logove i uklonite zastarele cron unose posle gašenja funkcije ili sajta
Česta pitanja
- Šta znači pet zvezdica u cron rasporedu?
- `* * * * *` znači da se komanda pokreće svakog minuta. Svaka zvezdica prihvata svaku vrednost svog polja: minut, sat, dan u mesecu, mesec i dan u nedelji.
- Kako da pokrenem cron jednom dnevno?
- Raspored `0 3 * * *` pokreće zadatak svakog dana u 03:00. Izaberite vreme kada je opterećenje malo i proverite koju vremensku zonu koristi server.
- Zašto cron radi ručno, ali ne i po rasporedu?
- Cron često ima drugačiji PATH, radni direktorijum i promenljive okruženja. Koristite apsolutne putanje do programa i fajlova, zapišite izlaz u log i proverite dozvole.
- Da li je WP-Cron pravi cron?
- Nije. WP-Cron proverava zadatke kada neko poseti sajt, pa može kasniti na sajtu bez poseta. Za pouzdan raspored može se povezati sa sistemskim cronom.
Reference
Osnivač NIJEFILA DOO. Piše o hostingu, DNS-u, email infrastrukturi i serverskoj administraciji.
Pogledaj NIJEFILA hosting pakete
START, BUSINESS i PRO. NVMe, besplatan SSL, DirectAdmin, podrška na srpskom.