Mogućnost da sami zadajemo vrijeme kad će se pokrenuti neki program jedan je od
osnovnih zahtjeva svakog administratora servera, pa i kućnog računala koje se
ne gasi često. Tako u neko gluho doba noći možemo pozvati backup proceduru kad
to nikome neće smetati ili pokrenuti bilo koji procesorsko ili mrežno zahtjevniji
posao koji ne zahtijeva naš nadzor. Može to biti i jednostavni podsjetnik, koji
će iskočiti u točno određeno vrijeme.
Za takve poslove mora se brinuti posebni program koji će stalno nadzirati točno
vrijeme i kad se ono poklopi sa zadanim, pokrenuti neku naredbu. Postoje dva mehanizma,
at i cron.
At - jednokratni poslovi
Sintaksa at naredbe vrlo je jednostavna. Kao njen argument zadaje se vrijeme
kad se neki posao treba pokrenuti, a popis poslova se može zadati kao "-f
popis.txt" odnosno tekstualnom datotekom s listom naredbi. Pokrene li se
naredba samo s vremenom, ulazimo u interaktivnu ljusku gdje možemo redom navoditi
naredbe sve do pritiska tipki Ctrl-D. Vrijeme se zadaje prirodnim (engleskim)
jezikom. Tako primjerice "3am Feb 20" i nije potrebno objašnjavati.
Ako se ne navede dan, pretpostavlja se da je to tekući, a ako je zadano vrijeme
upravo prošlo, pokrenut će se prvom slijedećom prilikom. Možemo i eksplicitno
zadati sutrašnji datum ključnom riječi tomorrow. Za zadavanje relativnog vremena,
primjerice za 4 sata, pisat ćemo "now +4 hours
".
Nakon što su poslovi zadani, njihov popis možemo vidjeti naredbom atq. Za brisanje
pojedinog posla, pokrećemo naredbu atrm s rednim brojem dobivenim iz prethodnog
popisa. Bitno je spomenuti da će se bilo koja naredba pokrenuti pod /bin/sh
ljuskom. Ako putanju (PATH) te ljuske nemamo dobro postavljenu, neke od naredbi
neće se moći pokrenuti jer neće biti pronađene u direktorijima. Ako nam se to
dogodi, možemo pisati imena programa s punim putanjama, primjerice "/usr/bin/updatedb
".
Okolina koja je bila postavljena kad smo zadavali dotični posao vrijedit će
i kod njegovog izvršavanja, pa se spomenuti problem može riješiti i postavljanjem
PATH varijable upravo tad. Izlaz svakog od poslova e-mailom se šalje korisniku
koji ga je pokrenuo.
Cron - periodika
Danas se znatno češće koristi Cron, koji omogućuje periodičko pokretanje naredbi.
Sve operacije zadaju se preko naredbe crontab. Posao u cronu može se definirati
naredbom crontab -e (edit), a pregledavati s -l (list). Brisanje svih zapisa
odjednom može se zadati nastavkom -r.
Pojedini zapis sastoji se od definicije vremena i naredbe koja će se pokrenuti.
Vrijeme pak ima pet rubrika odvojenih razmacima, redom minute, sati, dan u mjesecu,
mjesec i dan u tjednu. "59 23 29 2 *
" dogodit će se u ponoć krajem
veljače, no ipak jednom u četiri godine. Postavimo li zvjezdicu umjesto bilo
kojeg od tih brojeva, ona će značiti "svaki put". Primjerice, ako
je zvjezdica na drugom mjestu, naredba će se izvršavati svakih sat vremena.
U jednoj rubrici možemo navesti i više vrijednosti odvojenih zarezima ili kao
raspon brojeva. Primjerice, pišemo li "15,30,45,00 * * 12 2-4
" to
znači da će se naredba izvršavati svakih 15 minuta, ali samo u prosincu i to
utorcima, srijedama i četvrtcima. Vrijednosti se mogu zadavati i po koracima.
Ako bi za prvi stupac pisali "*/3
" to bi označavalo svake tri minute.
Svaka dva sata u drugoj rubrici možemo pisati i kao "0-23/2
". Mjeseci
i dani se, osim brojkama, mogu označavati i skraćenim engleskim nazivima.
Izlaz svih poslova se kao i kod at-a šalje e-mailom, no to ne mora biti onaj
od osobe koja ga je pokrenula, već se može definirati alternativa u varijabli
MAILTO, na vrhu crontab datoteke. Ako ne želimo primati nikakve obavijesti,
na kraju retka možemo dodati sintagmu " >/dev/null 2>&1
".
Brojni programi kod instalacije stavljaju svoje skripte u poddirektorije negdje
(zavisno od distribucije) unutar /etc direktorija. Tako primjerice cron.daily
sadrži skripte koje će se pokretati jednom dnevno, tijekom noći, pa i tamo možemo
postaviti vlastite.
Anacron
Programi često svoje potrebe žele ostvariti u najčudnija vremena, ne vodeći
računa o desktop računalima koja su uglavnom ugašena preko noći i izvan radnog
vremena. Kako mi ne bi morali proučavati vlastite navike i temeljem toga mijenjati
vrijeme izvođenja tih poslova, za takvo nešto brine se anacron. Njegova je zadaća
periodično pokretanje poslova, ali ne na vremenskoj bazi, već kad god je računalo
uključeno. Konfiguracija se nalazi u /etc/anacrontab, a svaki redak se sastoji
od četiri polja. Prvi stupac odnosi se na period u danima (za posao jednom tjedno
broj će biti 7), drugi je pauza u minutama od pokretanja sustava do pokretanja
posla, treći je neka jedinstvena oznaka posla, dok je zadnji sama naredba.
Problemi su mu što se tako ne može precizno kontrolirati vrijeme (bilježe se
samo dani, ne i sati), te što anacron ne vodi računa o opterećenju sustava,
tj. pokreće program iako možda korisnik radi nešto drugo (no to je boljka i
ostalih).