Vsak sistemski skrbnik ali spletni razvijalec se sreča s ponavljajočimi se opravili: izdelava nočnih varnostnih kopij, pošiljanje obvestil, čiščenje začasnih datotek ali periodično osveževanje podatkov iz zunanjih API-jev. V operacijskem sistemu Linux za avtomatizacijo skrbi cron – vgrajena demonska storitev (daemon), ki v ozadju preverja urnike ter samodejno zaganja ukaze ob točno določenem času.
Struktura časovnega zapisa v tabeli crontab
Urnik posameznega opravila določimo s petimi časovnimi polji, ki jim sledi ukaz za izvedbo.
| Polje | Pomen | Dovoljene vrednosti | Posebni znaki |
|---|---|---|---|
| 1. polje | Minuta | 0 – 59 | * (vsaka), */5 (vsakih 5) |
| 2. polje | Ura | 0 – 23 | *, 2,4 (ob 2h in 4h) |
| 3. polje | Dan v mesecu | 1 – 31 | *, 1-15 (prva polovica meseca) |
| 4. polje | Mesec | 1 – 12 | * |
| 5. polje | Dan v tednu | 0 – 7 (0 in 7 sta nedelja) | 1-5 (od ponedeljka do petka) |
Upravljanje crontab opravil v terminalu
Za urejanje in pregled urnika opravil uporabljamo orodje crontab.
- crontab -e: Odpre urejevalnik za dodajanje ali spreminjanje vaših osebnih avtomatiziranih opravil.
- crontab -l: Izpiše seznam vseh trenutno nastavljenih cron opravil prijavljenega uporabnika.
- crontab -r: Izbriše celotno tabelo cron opravil za trenutnega uporabnika.
Praktični primeri cron opravil
Spodnji primeri prikazujejo nekaj najpogostejših scenarijev uporabe crona za spletne aplikacije in skripte.
# 1. Zagon PHP skripte vsakih 15 minut */15 * * * * /usr/bin/php /var/www/html/cron/sinhronizacija.php > /dev/null 2>&1 # 2. Izdelava varnostne kopije MySQL baze vsak dan ob 03:00 zjutraj 0 3 * * * /usr/bin/mysqldump -u root -pGeslo123 baza > /backups/baza_$(date +\%F).sql # 3. Zagon čiščenja predpomnilnika vsako nedeljo opolnoči 0 0 * * 0 /var/www/skripte/pocisti_cache.sh
Pomembna opozorila pri uporabi crona
Cron deluje v zelo omejenem okolju (Environment), zato vedno uporabite celotne absolutne poti do programov in datotek (npr. /usr/bin/php namesto le php). Za spremljanje morebitnih napak je priporočljivo izhod skripte preusmeriti v dnevniško datoteko (npr. >> /var/log/moj_cron.log 2>&1).