lauantaina, marraskuuta 11, 2006

Tehtävien suorittaminen ajastetusti cron:illa

Linuxissa voidaan suorittaa erilaisia komentoja ajastetusti cron nimisellä ohjelmalla. Ohjelmaa kannattaa käyttää esimerkiksi varmuuskopiointiin, loki-tiedostojen siivoamiseen ja turhien tiedostojen poistamiseen.

Varsinainen ajastaminen tehdään crontab nimisen ohjelman avulla. Crontab:illa voidaan siis lisätä, poistaa ja näyttää ajastettuja komentoja. Oletuksena root käyttäjällä on aina oikeus käyttää crontab ohjelmaa. Myös muille käyttäjille voidaan antaa oikeuksia crontab:in käyttämiseen. Jos cron.allow tiedosto löytyy koneelta, niin silloin kaikki käyttäjät, jotka ovat listattuna kyseiseen tiedostoon voivat käyttää cron:ia. Jos taas cron.allow tiedostoa ei lyödy ja cron.deny tiedosto löytyy, niin silloin kaikki käyttäjät, jotka eivät ole listattuna cron.deny tiedostoon voivat käyttää cron:ia.

Crontab:in muokkaaminen onnistuu komennolla:

crontab -e

Crontab:in listaaminen onnistuu komennolla:
crontab -l

Crontab-tiedoston rivit koostuvat yhteensä kuudesta kentästä, joista ensimmäiset viisi ovat ajan määrittelemiseen ja kuudes on suoritettava komento.
minuutti tunti päivä kuukausi viikonpäivä komento

Kentät erotetaan toisistaan sarkaimella tai välilyönnillä.


Aikaan liittyvien kenttien arvot voivat olla:
  • minuutti 0-59
  • tunti 0-23
  • päivä 0-31
  • kuukausi 1-12
  • viikonpäivä 0-6 tai 0-7 (0 ja 7 tarkoittavat sunnuntaita)

Arvojen määrittely:
  • yksittäinen arvo: kenttään sopiva arvo (esim. 1)
  • arvoalue: tavuviiva kenttään sopivien arvojen väliin (esim. 3-5)
  • arvolista: pilkku kenttään sopivien arvojen väliin (esim. 2,4,7)
  • kaikki arvot: *

Päivä voidaan merkitä päivä ja viikonpäivä kenttiin. Jos molempia kenttiä käytetään, niin komento suoritetaan molemmissa määriteltyinä päivinä. Jos vain toista päivä kenttää käytetään, niin toiseen on laitettava *.

Sitten vielä muutama käytännön esimerkki selityksin.

0,30 * * * * /suoritettava/komento

Yllä oleva esimerkki suorittaa komennon (jatkuvasti) puolen tunnin välein.

15 2,7,11 * * * /suoritettava/komento

Yllä oleva esimerkki suorittaa komennon joka päivä kello 2.15, 7.15 ja 11.15.

30 4 2,20 * * /suoritettava/komento

Yllä oleva esimerkki suorittaa komennon jokaisen kuukauden toinen ja kahdeskymmenes päivä kello 4.30.

20 9 7 1-2 * /suoritettava/komento

Yllä oleva esimerkki suorittaa komennon tammi- ja helmikuun seitsemäs päivä kello 9.20.

15 11 * * 0,1,3,5 /suoritettava/komento

Yllä oleva esimerkki suorittaa komennon joka viikon sunnuntaina, maanantaina, keskiviikkona ja perjantaina kello 11.15

kommentit (0):