# Šta je cron job i kako zakazati zadatak na hostingu

[Izvor](https://nijefila.rs/blog/cron-job-hosting) · [Nikola Filić](https://nijefila.rs/o-nama#nikola-filic)

Objavljeno: 2026-08-14 · Poslednja tehnička provera: 2026-10-04

Cron job je raspored koji serveru kaže da određenu komandu pokrene u određeno vreme. Koristi se za backup, slanje izveštaja, uvoz podataka, čišćenje privremenih fajlova i pouzdanije WordPress zadatke. Jedan pogrešan znak može da pretvori „jednom dnevno“ u „svakog minuta“, pa je važnije razumeti raspored nego samo kopirati komandu iz tutorijala.

## 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 minuta
- `30 8 * * 1-5` — radnim danima u 08:30
- `0 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](/blog/sta-je-directadmin) ili kod podrške.

```shell
0 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 `PATH` od 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 `flock` kada 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.

## Izvori

- [man7.org — crontab(5) Linux manual page](https://man7.org/linux/man-pages/man5/crontab.5.html)

- [WordPress Developer Resources — Cron](https://developer.wordpress.org/plugins/cron/)

- [DirectAdmin Docs — General Usage and CronJobs](https://docs.directadmin.com/directadmin/general-usage/index.html)
