Projekat

Općenito

Profil

LinuxCrontab

Linux CRON basics

Predefinisani CRON-ovi

Predefinisani cron-ovi su u stvari direktoriji gdje se smještaju scripte ili programi koji će biti pokrenuti u predefinisano vrijeme za taj cron. Ti filderi se nalaze u /etc, a oni su sljedeći:

Direktorij opis
cron.houry Pokreće sve scripte svako sat vremena
cron.daily Pokreće sve scripte svakog dana u 4:14
cron.weekly Pokreće sve scripte svake sedmice i to subotom u 4:29
cron.monthly Pokreće sve scripte svakog mjeseca i to svakog prvog u mjesecu u 4:44

Napomena: Vremena i datumi se mogu promjeniti promjenom prema dole opisanoj proceduri u crontab-u

Crontab

Crontab je konfiguracijski fajl za CRON kojim se definiše šta i kada će nešto automatski pokrenuti. Lokacija mu je /etc/crontab, a ima sljedeću sintaksu:

mm hh dd MM WD user /full-path/command
Gdje su:
mm minuta pokretanja (0-59), mogu se koristiti radi poravnanja brojevi sa vodećom nulom (01, 02 itd.)
hh sat pokretanja (0-23 - 24-satno vrijeme), mogu se koristiti radi poravnanja brojevi sa vodećom nulom (01, 02 itd.)
dd dan u mjesecu (0-31)
MM mjesec u godini (1-12)
WD dan u sedmici (0-6), pri čemu je 0=nedelja, 1=ponedeljak itd. Također se može koristiti 7=nedelja
user korisnik sistema pod čijim privilegijama će se komanda izvršiti
full-path puni put do komande
command sama komanda koja treba da bude pokrenuta

Komanda mora sadržati puni put, npr.: /usr/sigma/backup/backup.sh

varijacije

Bilo koji vremenski parametar može da bude zadat za više istih umjesto jedinstven broj, pa tako može da bude:

od-do razdoblje (npr. 1-4 - od januara do aprila)
1,2,3,15,20 više konkretnih brojeva, npr. prva, druga, treća, petnaesta i dvadeta minuta sata
-*/15 svako n minuta, npr. svako 15 minuta, svako 2 sata(-*/2) itd.
* svaku jedinicu tog vremena, npr. svakog dana, mjeseca itd.

I evo primjer izgleda jedne takve komande:

00 10,15 * * 1-5 root /usr/sigma/backup/backup_media_checker.sh

Rezultat: pokreni kao root komandu (pogledati) svaki radni dan (od ponedeljka do petka) u 10:00 i 15:00

Izlazi komande

CRON monitorira dva izlaza komande: stdout (inače ekran) i stderr (vraćeni kôd greške)

Stdout ukoliko ga je bilo, šalje se mailom root korisniku, što se može promjeniti parametrom "MAILTO=" u vrhu fajla.

Odbijanje stdout, a primanje stderr izlaza

Ukoliko nije potrebno da se stdout izlaz šalje mailom, onda je potrebno na kraju komande staviti >/dev/null, primjer:

-*/5 * * * * root /usr/local/bin/one_instance_every_5_min.py >/dev/null

U ovom slučaju se neće slati mail sa sadržajem stdout, ali ukoliko dođe do greške i komanda vrati stderr<>0, onda će CRON poslati mail sa stdout i naznakom da je došlo do greške.

Odbijanje stdout i stderr izlaza

Ukoliko nije potrebno da se stdout niti stderr izlaz šalje mailom potrebno je iza komande pored predhodnog staviti i 2>&1, primjer:

-*/5 * * * * root /usr/local/bin/one_instance_every_5_min.py >/dev/null 2>&1

Kod ovakve definicije komande ni u kom slučaju mail neće biti poslan.