3. Käskude käivitamise ajastamine

3.1. crontab: oma crontab-faili uurimine või muutmine

crontab võimaldab Teil käivitada käske regulaarse ajavahemiku järel, kusjuures Te ei pea isegi olema ennast sisse loginud. crontab võib käsu väljundi e-postiga Teile saata. Te saate määrata intervalli minutites, tundides, päevades või isegi kuudes. Sõltuvalt võtmetest toimib crontab omajagu erinevalt:

  • -l: olemasoleva crontab-faili näitamine.

  • -e: crontab-faili redigeerimine.

  • -r: olemasoleva crontab-faili eemaldamine.

  • -u <kasutaja>: mõne mainitud võtme rakendamine kasutajale <kasutaja>. Seda saab teha ainult administraator (root).

Alustame kohe faili crontab redigeerimisega. Kui annate käsu crontab -e, ilmub Teie lemmiktekstiredaktor, kui olete selle määranud keskkonnamuutujaga EDITOR või VISUAL, vastasel juhul avatakse Vi. Faili crontab rida koosneb kuuest väljast. Esimesed viis välja märgivad vastavalt minutite, tundide, päevade, kuude ja nädalapäevade intervalle. Kuues väli sisaldab käivitatavat käsku. Ridasid, mille alguses seisab #. peetakse kommentaariks crond (programm, mis vastutab crontab-failides kirjapandu täitmise eest) ignoreerib neid. Faili ülesehitus on natuke teistsugune süsteemse crontab-faili puhul (selle asukohaks on /etc/crontab). Selles seisab kuuendal väljal kasutajanimi, kelle õigustes käivitatakse seitsmendal väljal antud programm. Seda tuleks kasutada ainult haldamisülesanneteks ning selliste kasutajate tööde käivitamiseks, mis ongi mõeldud süsteemi turvalisuse suurendamiseks (näiteks viirustõrje-kasutaja või siis andmebaasiserveri käimashoidmiseks loodud kasutaja). Toome näite crontab-faili kohta:

[Märkus]Märkus

Loetavaks muutmiseks tuli meil pikad read murda. Seepärast tuleb arvestada, et mõned osad peavad tegelikult asuma ühel real. Kui rida lõpeb märiga \, tähendab see, et rida jätkub. Sellist konventsiooni kasutatakse nii Makefile-failides ja shellis kui ka mitmel pool mujal. Samuti on siin eestindatud ka sellised kommentaarid, mis tavaliselt esinevad inglise keeles.

# Kui Te ei soovi saada e-kirja, muutke 
#   järgmine rida kommentaariks
#MAILTO="Teie_e-posti_aadress"
#
# Iga 2 päeva tagant antakse 14.00 teada uutest piltidest, 
#   nagu eespool selgitatud - seejärel antakse failile 
#   "tempel" taas käsk "touch". Märki  
#   "%" tõlgendataksereavahetusena, mis lubab 
#   anda ühel real mitu käsku.
0 14 */2 * *  find /shared/pildid              \
  -cnewer /shared/pildid/tempel                 \
  -a -iregex ".*\.jpe?g"             \
  -a -not -regex                               \
    ".*/old/.*"%touch /shared/images/stamp
#
# Igal jõululaupäeval mängitakse muusikat :)
0 0 25 12 * mpg123 $HOME/sounds/merryxmas.mp3
#
# Iga teisipäev 17.00 trükitakse välja ostunimekiri...
0 17 * * 2 lpr $HOME/ostunimekiri.txt

Intervalle saab mõistagi määrata väga mitmel moel ja toodud näide on ainult üks võimalus. Te võite määrata diskreetsed väärtused, mille eraldamiseks tuleb kasutada komasid (1,14,23) või vahemiku (1-15) või ka neid kombineerida (1-10,12-20), määrates soovi korral ka sammu (1-12,20-27/2). Ja siis tuleb lihtsalt leida käsud, mida nende vahvate intervallide järel käivitada!

3.2. at: käsu ajastamine ainult üheks korraks

Võimalik, et soovite käivitada mingi käsu konkreetsel päeval, aga mitte regulaarselt. Võib-olla soovite näiteks tuletada endale meelde, et Teid ootab õhtul kell kuus ees kohtumine. Teil töötab X, paigaldatud on tarkvarapakett X11R6-contrib ning Te soovite, et Teile antaks 17.30 teada, et on aeg liikuma hakata, et mitte kohtumisele hilineda. Siin astub mängu at:

$ at 5:30pm
 # Teie ees seisab nüüd "at" viip
at> xmessage "Aeg minna! Kohtumine on kell 18.00"
 # Väljumiseks andke käsk CTRL-d
at> <EOT>
job 1 at 2005-02-23 17:30
$

Aega saab määrata mitmel moel:

  • now + <intervall>: see tähendabki hetke 'praegu' ja intervalli (lisavõimalus; intervalli puudumine tähendab lihtsalt praegust hetke). Intervalli süntaks on <n> (minutes|hours|days|weeks|months) vastavalt minutite, tundide, päevade, nädalate ja kuude jaoks. Nii võib intervalliks määrata näiteks now + 1 hour (ühe tunni pärast), now + 3 days (kolme päeva pärast) jne.

  • <kellaaeg><päev>: daatumi täielik määramine. Parameeter <kellaaeg> on kohustuslik. at on selle puhul üsna liberaalne: Te võite kellaajaks anda 0100, 04:20, 2am, 0530pm, 1800 või mõne kolmest eriväärtusest: noon (keskpäev), teatime (16.00) või midnight (kesköö). Parameeter <päev> pole kohustuslik. Ka selle võib määrata mitmel kujul: 12/20/2001 (20.detsember 2001) või 20.12.2001. Te võite ka aasta ära jätta, aga siis saate kasutada ainult viimast, niinimetatud Euroopa märkimisviisi: 20.12. Kuu võib määrata ka tähtedega: sobivad nii Dec 20 kui ka 20 Dec.

at tunnustab ka mitmeid võtmeid:

  • -l: näitab parajasti järjekorras tööde nimekirja, kus esimesel väljal seisab töö number. See on sama, mis käsk atq.

  • -d <n>: järjekorrast eemaldatakse töö numbriga <n>. Numbri saab tuvastada käsuga atq. See on sama, mis käsk atrm <n>.

Nagu ikka, tutvustab kõiki võtmeid ja muud lähemalt manuaalilehekülg at(1).