Blog o spletnem programiranju in elektroniki
💬 👤
back Nazaj na blog
Linux

Kako deluje cron in kako avtomatizirati opravila v Linuxu

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.

  1. crontab -e: Odpre urejevalnik za dodajanje ali spreminjanje vaših osebnih avtomatiziranih opravil.
  2. crontab -l: Izpiše seznam vseh trenutno nastavljenih cron opravil prijavljenega uporabnika.
  3. 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).

back Nazaj na blog