Razumijevanje i korištenje Cron-a: Sveobuhvatni vodič za planiranje poslova
cron, kratko za naredba pokreni na mreži, je moćan vremenski baziran raspored poslova u operativnim sistemima sličnim Unixu. Pojam Cron je igra riječi kronos or Chronos, koji u grčkoj mitologiji predstavlja vrijeme. Ime cron za vremenski baziran planer poslova odražava njegovu funkciju planiranja i izvršavanja zadataka u određeno vrijeme ili intervale, što ga čini prikladnom referencom na koncept vremena u mitologiji.
Cron vam omogućava da automatizujete zadatke koji se ponavljaju, izvršavate skripte u određenim intervalima i održavate efikasnost sistema. Ovaj sveobuhvatni vodič će vas provesti kroz sve što trebate znati o cron-u, od instalacije do upotrebe, ključnog rječnika i pravih uzoraka koda.
Sadržaj
- Šta je cron?
- Instaliranje Cron
- Osnovni pojmovi i terminologija
- Cron sintaksa
- Primjeri i slučajevi upotrebe
- Uobičajene zamke i najbolje prakse
- Dodatni cron resursi
Šta je Cron?
Cron je demon (pozadinski proces) koji radi na sistemima baziranim na Unixu, uključujući Linux i macOS. Njegova primarna svrha je automatsko izvršavanje zakazanih zadataka. Ovi zadaci mogu varirati od jednostavnih skripti do održavanja sistema i pravljenja rezervnih kopija.
Instaliranje Cron
U većini sistema sličnih Unixu, cron je unapred instaliran. Možete provjeriti njegovu dostupnost otvaranjem terminala i upisivanjem:
crontab -e
Ako ova komanda otvori uređivač cron tabele, imate instaliran cron. Ako nije, možete ga instalirati pomoću upravitelja paketa vašeg sistema. Na primjer, na Ubuntuu možete koristiti:
sudo apt-get install cron
Cron koncepti i terminologija
Prije nego što uđemo u upotrebu cron-a, razumijemo neke bitne koncepte i terminologiju:
- crontab: Kratica za cron table, to je datoteka koja sadrži listu zakazanih zadataka za korisnika.
- Cronjob: Jedan zadatak ili naredba zakazana za izvođenje u određeno vrijeme.
- Fields: Svaki cronjob ima pet polja koja definiraju kada se posao izvodi:
- Minuta (0-59)
- Sat (0-23)
- Dan u mjesecu (1-31)
- Mjesec (1-12)
- Dan u sedmici (0-7, gdje i 0 i 7 predstavljaju nedjelju)
Cron sintaksa
Razumijevanje sintakse unosa u crontab je ključno. Prati obrazac:
* * * * * command-to-be-executed
Evo objašnjenja s komentarima koje možete umetnuti u svoj cron posao:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Svaka zvjezdica (*) predstavlja polje u cron izrazu. Na primjer, da biste zakazali posao svaki dan u 3:30, koristili biste:
30 15 * * * command-to-be-executed
Cron primjeri i slučajevi upotrebe
Hajde da istražimo neke praktične primjere kako bismo ilustrirali korištenje cron-a:
- Dnevno pokretanje skripte: Za izvršavanje skripte svaki dan u ponoć, možete koristiti:
0 0 * * * /path/to/script.sh
- Pokretanje skripte svaki sat: Za zadatak po satu koristite:
0 * * * * /path/to/script.sh
- Sedmična sigurnosna kopija: Za zakazivanje sedmične sigurnosne kopije nedjeljom u 2 ujutro, koristite:
0 2 * * 0 /path/to/backup-script.sh
- Izvođenje zadatka u određenim mjesecima: Za pokretanje posla samo u januaru i julu u 8:30:
30 8 * 1,7 * /path/to/script.sh
Cron zamke i najbolje prakse
- Varijable okoline: Osigurajte da vaši cron poslovi postavljaju potrebne varijable okruženja, jer cron poslovi ne nasljeđuju varijable okruženja vaše ljuske.
- Dozvole: Budite sigurni da ste postavili dozvole za datoteku skripte kao izvršnu. Svaki put kada bih ponovo sačuvao svoju skriptu, otkrio bih da moje dozvole treba ponovo da se podese!
- Varijable putanje: Navedite punu putanju do izvršnih datoteka i skripti unutar vaših cron poslova kako biste izbjegli probleme s relativnim stazama.
- testiranje: Testirajte ih u sigurnom okruženju prije postavljanja kritičnih cron poslova kako biste bili sigurni da rade kako se očekuje.
- Sindikat: Preusmjerite izlaz vaših cron poslova u datoteku dnevnika kako biste pratili njihovo izvršenje i sve potencijalne greške.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Ovaj cron posao pokreće skriptu /path/to/script.sh
svaki dan u ponoć, a izlaz (i stdout i stderr) generiran od strane skripte se dodaje u zapisnik
/path/to/cron.log
. Ovo je uobičajena praksa za hvatanje i evidentiranje izlaza cron poslova u svrhu praćenja i rješavanja problema. Hajde da razložimo ovu specifičnu sintaksu cron posla:
- *0 0 * * *: Ovaj dio definira raspored kada se cron posao treba pokrenuti. U ovom slučaju, planirano je da se pokreće svaki dan u ponoć (0 minuta nakon 0 sati).
- /path/to/script.sh: Ovo je naredba ili skripta koja se izvršava kada se pokrene cron posao. Ovaj primjer prikazuje skriptu koja se nalazi na
/path/to/script.sh
. - >> /put/do/cron.log: Ovaj dio preusmjerava standardni izlaz (stdout) cron posla u datoteku dnevnika pod nazivom
cron.log
nalazi se na/path/to/
. The>>
operator dodaje izlaz u datoteku dnevnika, tako da ako datoteka ne postoji, biće kreirana, a ako već postoji, izlaz će biti dodan na kraj datoteke. - 2> & 1: Ovo se koristi za preusmjeravanje standardnog izlaza (stdout) i standardne greške (stderr) na istu datoteku dnevnika. The
2
predstavlja stderr, i1
predstavlja stdout. dakle,2>&1
znači da su i stdout i stderr preusmjereni na istu datoteku dnevnika navedenu ranije.
Cron je vrijedan alat za automatizaciju zadataka na sistemima baziranim na Unixu. Sa svojim fleksibilnim opcijama planiranja, može pojednostaviti administraciju sistema i poboljšati efikasnost. Razumevanjem njegove sintakse i praćenjem najboljih praksi, možete iskoristiti moć crona da efikasno automatizujete svoje rutinske zadatke.
Dodatni Cron resursi
- Unix Daemon - Dean Wilson