Gym
lesson

Zakazani zadaci (cron)

Cron je sistemski servis koji automatski pokreće komande ili skripte prema zadatom rasporedu. Koristan je za backupe, čišćenje logova, slanje izveštaja — sve što se ponavlja po rasporedu.

Šta je cron?

Cron je demon (pozadinski servis) koji stalno radi i prati listu zadataka. Ta lista se zove crontab (cron table). Svaki korisnik ima sopstveni crontab, a postoji i sistemski crontab za root.

# Provjeri da li cron servis radi
systemctl status cron
# ili
systemctl status crond

crontab komanda

Upravljanje crontabom

# Otvori crontab u editoru (da dodaš/izmeniš zadatke)
crontab -e

# Prikaži trenutni crontab
crontab -l

# Obriši ceo crontab (pazi — briše sve!)
crontab -r

# Uredi crontab za drugog korisnika (kao root)
crontab -e -u korisnik

Napomena: Kada prvi put pokreneš crontab -e, sistem te pita koji editor koristiti. Preporuka: odaberi nano za početnike.


Sintaksa crontaba

Svaki zadatak u crontabu je jedna linija:

MINUTA  SAT  DAN  MESEC  DAN_U_NEDELJI  KOMANDA
  *      *    *     *          *         /put/do/komande

Polja

Polje Opseg vrednosti Opis
MINUTA 0 – 59 Minut sata
SAT 0 – 23 Sat dana (0 = ponoć)
DAN 1 – 31 Dan meseca
MESEC 1 – 12 Mesec godine
DAN_U_NEDELJI 0 – 7 Dan u nedelji (0 i 7 = nedelja)

Specijalni karakteri

Karakter Značenje Primer
* Svaka vrednost * * * * * — svaki minut
, Lista vrednosti 1,15,30 — u 1., 15. i 30. minutu
- Opseg vrednosti 9-17 — od 9 do 17 sati
/N Svaki N-ti */5 — svakih 5 minuta

Primeri cron zadataka

# Pokreni skriptu svakih 5 minuta
*/5 * * * * /home/student/provjera.sh

# Svaki dan u ponoć (00:00)
0 0 * * * /home/student/backup.sh

# Svaki radni dan u 8:30 ujutru (pon-pet)
30 8 * * 1-5 /home/student/izvestaj.sh

# Svaki ponedeljak u 06:00
0 6 * * 1 /home/student/sedmicni-backup.sh

# Prvog u mesecu u ponoć
0 0 1 * * /home/student/mesecni-backup.sh

# Svakog sata
0 * * * * /home/student/provjeri-prostor.sh

# Svakih 15 minuta između 9 i 17h
*/15 9-17 * * * /home/student/monitor.sh

# Svakog dana osim nedeljom u 10:00
0 10 * * 0-6 /home/student/zadatak.sh

Savet: Sajt crontab.guru vizuelno objašnjava cron sintaksu — veoma korisno za provjeru ispravnosti izraza.


Specijalni stringovi

Umesto 5 polja, možeš koristiti preglednije skraćenice:

String Ekvivalent Opis
@reboot Jednom, pri pokretanju sistema
@hourly 0 * * * * Svaki sat
@daily 0 0 * * * Svaki dan u ponoć
@weekly 0 0 * * 0 Svake nedelje
@monthly 0 0 1 * * Prvog u mesecu
@yearly 0 0 1 1 * Jednom godišnje
# Primjer upotrebe specijalnih stringova
@reboot /home/student/start.sh
@daily  /home/student/backup.sh
@hourly /home/student/provjeri.sh

Izlaz cron zadataka

Po defaultu, cron šalje izlaz (stdout i stderr) emailom lokalnom korisniku. Na serverima bez email servisa, poruke se gube ili odlaze u /var/spool/mail/.

Preusmeravanje izlaza

# Zapiši izlaz u log fajl
0 0 * * * /home/student/backup.sh >> /home/student/backup.log 2>&1

# Ignoriši sav izlaz (tihi mod)
0 0 * * * /home/student/backup.sh > /dev/null 2>&1

Napomena: U crontabu se % mora eskejpovati kao \%.


Debugging cron zadataka

# Provjeri da li se cron zadatak izvršava — poglej sistemski log
grep CRON /var/log/syslog | tail -20

# Ručno pokreni istu komandu da provjeriš greške
/home/student/backup.sh

# Provjeri da li skripta ima pravo izvršavanja
ls -l /home/student/backup.sh
chmod +x /home/student/backup.sh

Česta greška: Cron radi sa minimalnim okruženjem (PATH je ograničen). Uvek koristi apsolutne putanje do komandi u cron zadacima, npr. /usr/bin/python3 umesto samo python3.