Cron (crontab) — definicija in uporaba za načrtovanje opravil v Linuxu
Cron in crontab: vodnik za načrtovanje in avtomatizacijo ponavljajočih se opravil v Linuxu — nastavitve, sintaksa crontab, primeri in nasveti za upravljanje opravkov.
Cron je računalniški program, s katerim lahko računalniku omogočite, da opravi naloge v določenih časovnih intervalih. Uporablja se v računalniških operacijskih sistemih UNIX in operacijskih sistemih, ki so podobni sistemu UNIX, kot je Linux.
Cron lahko uporabite za načrtovanje večine ponavljajočih se opravil. Pogosto se uporablja za avtomatizacijo opravil, povezanih z vzdrževanjem ali upravljanjem računalnika ali računalniškega omrežja, čeprav se lahko uporablja tudi za številna druga opravila, kot sta prenašanje datotek iz interneta in prenašanje e-pošte ob določenih urah ali datumih.
Ime računalniškega programa cron izhaja iz besede cron, ki izhaja iz grške besede za čas, χρόνος (chronos).
Cron nastavite z urejanjem datoteke, imenovane crontab (tabela cron). V tej datoteki so navedena določena opravila, ki jih mora računalnik zagnati, in čas, ko jih je treba zagnati.
Kje so crontab datoteke in kako jih upravljamo
Običajno ima vsak uporabnik svojo crontab datoteko. Najpogostejši ukazi za upravljanje so:
- crontab -e — odpre crontab trenutnega uporabnika za urejanje.
- crontab -l — izpiše trenutni crontab uporabnika.
- crontab -r — odstrani crontab uporabnika.
Namesto uporabnikovega crontaba obstajajo tudi sistemske lokacije:
/etc/crontab— sistemski crontab (ima dodatno polje z uporabnikom, pod katerim teče ukaz)./etc/cron.d/— direktorij za pakete, ki potrebujejo svoje crontab datoteke./etc/cron.hourly/,/etc/cron.daily/,/etc/cron.weekly/,/etc/cron.monthly/— enostaven način za skripte, ki naj tečejo na teh intervalih.
Oblika vnosa v crontab
Osnovna vrstica v crontab datoteki ima obliko (pet časovnih polj, nato ukaz):
minuta ura dan-v-mesecu mesec dan-v-tednu ukaz
Polja:
- minuta — 0–59
- ura — 0–23
- dan-v-mesecu — 1–31
- mesec — 1–12
- dan-v-tednu — 0–7 (0 in 7 pomenita nedelja) ali imena dni
Primeri zapisov:
# Vsako jutro ob 6:30 zaženi varnostno kopijo 30 6 * * * /usr/local/bin/backup.sh # Vsakih 5 minut */5 * * * * /usr/bin/php /var/www/html/script.php # Vsako nedeljo ob 3:00 0 3 * * 0 /usr/bin/apt update && /usr/bin/apt -y upgrade
Namesto natančnih polj lahko uporabite tudi posebne fraze:
- @reboot — ob zagonu sistema
- @yearly ali @annually — enkrat letno
- @monthly, @weekly, @daily, @hourly
Dodatne nastavitve in nasveti
Crontab podpira tudi nastavitve okolja na vrhu datoteke, na primer:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin [email protected] HOME=/home/username
- Uporabljajte absolutne poti za ukaze in datoteke, ker ima cron omejeno okolje (PATH je pogosto zelo skromno nastavljen).
- Preusmerjanje izhoda: ker cron pošlje izhod na e-pošto (če je MAILTO nastavljen), je dobro preusmeriti izhod v log:
/path/script.sh >> /var/log/script.log 2>&1. - Če v ukazu uporabite znake %, jih morate v crontabu pobegniti z
\%, ker se jih šteje za poseben znak (preoblikovanje vrstice v stdin). - Če skripta uporablja relativne poti ali zahteva določeno delovno mapo, nastavite
cd /pot/do/mape && ./skriptaali v skripti začnite zcd.
Varnost, dovoljenja in odpravljanje težav
- Določeni sistemi uporabljajo
/etc/cron.allowin/etc/cron.denyza nadzor, kateri uporabniki smejo urejati crontab. - Preverite sistemske log datoteke (npr.
/var/log/cron,/var/log/syslogali), če opravila ne tečejo kot pričakovano. - Za lažje razhroščevanje začasno preusmerite okolje v datoteko (v crontab dodajte vrstico):
* * * * * env >> /tmp/cron_env 2>&1in si oglejte, katera spremenljivka PATH je na voljo. - Uporabite popolne poti do izvajalnikov (npr.
/usr/bin/python3), ker ukazi, ki delujejo v interaktivni seji, morda ne delujejo pod cron.
Napredne možnosti
- V sistemskem crontabu (
/etc/crontab) je dodatno polje za uporabnika, npr.:0 2 * * * root /usr/local/bin/sys-maintenance. - V
/etc/cron.d/lahko nameščate paketne skripte z ločenimi datotekami. - Za bolj natančno kontrolo nad časovnim načrtovanjem (in večjo preglednost/poročanje) lahko namesto crona uporabite systemd timers, ki so v novejših distribucijah alternativa cron-u.
Pogoste napake
- Neupoštevanje okolja (PATH, HOME) — ukaz ne najde izvršljive datoteke.
- Uporaba relativnih poti — skripta ne najde datotek.
- Neustrezne pravice — skripta nima execute pravic ali uporabnik nima dostopa do datotek.
- Časovna cona in poletni čas — cron uporablja sistemsko časovno cono; pri selitvah med časovnimi conami ali ob vklopu/izklopu poletnega časa se čas zagona lahko spremeni.
Cron je preprost, zanesljiv in še vedno široko uporabljen mehanizem za razporejanje opravil v UNIX/Linux okolju. Čeprav obstajajo naprednejše alternative (kot so systemd timers ali specializirana orodja za orkestracijo), je za številne rutinske naloge cron še vedno najbolj praktična izbira.
Vprašanja in odgovori
V: Kaj je kron?
O: Cron je računalniški program, ki se uporablja za načrtovanje opravil v določenih časovnih intervalih.
V: Kje se uporablja Cron?
O: Cron se uporablja v računalniških operacijskih sistemih UNIX in operacijskih sistemih, ki so podobni sistemu UNIX, kot je Linux.
V: Katere vrste opravil je mogoče načrtovati s programom Cron?
O: S programom Cron je mogoče načrtovati večino ponavljajočih se opravil. Pogosto se uporablja za avtomatizacijo opravil, povezanih z vzdrževanjem ali upravljanjem računalnika ali računalniškega omrežja, čeprav se lahko uporablja tudi za številna druga opravila, na primer prenos datotek iz interneta in prenos e-pošte ob določenih urah ali datumih.
V: Od kod izvira ime Cron?
O: Ime računalniškega programa Cron izhaja iz besede cron, ki izhaja iz grške besede za čas, χρόνος (chronos).
V: Kako se program Cron nastavi?
O: Program Cron se nastavi z urejanjem datoteke, imenovane crontab (tabela cron). V tej datoteki so navedena določena opravila, ki jih mora računalnik zagnati, in čas, ko jih je treba zagnati.
V: Kaj je crontab?
O: Crontab je datoteka, v kateri so našteta določena opravila, ki jih mora računalnik zagnati, in kdaj naj se ta opravila izvedejo.
V: Za katere vrste ponavljajočih se opravil se lahko uporablja Cron?
O: Večino ponavljajočih se opravil, povezanih z vzdrževanjem ali upravljanjem računalnika ali računalniškega omrežja, je mogoče avtomatizirati s programom Cron. Uporablja se lahko tudi za številna druga opravila, kot sta prenašanje datotek iz interneta in prenašanje e-pošte ob določenih urah ali datumih.
Iskati