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/commandGdje 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.