Tidsindstillet kørsel af programmer

Fra Debianguiden
Skift til: Navigation, Søgning

Det er meget dejligt at kunne sætte sin box til at udføre forskellige kommandoer på forskellige tidspunkter. Dette gøres vha. cron. Rent praktisk består cron af to dele. Det brugeren oplever, og den del der rent faktisk udfører de valgte programmer: 'crontab' og 'cron'. Lad os begynde med et lille eksempel og i løbet af det gennemgå de forskellige muligheder, der er i cron.

De fleste systemer fjerner indholdet af /tmp hver gang du genstarter. Hvis du ikke genstarter særlig tit, kan der samles en hel del filer i din /tmp-mappe Her ville det være smart hvis man f.eks. en gang om dagen checkede om der var nogle filer der ikke var blevet brugt i tre dage, for derefter at fjerne disse. Dette kan nemt automatiseres og køres gennem cron. For at slette en fil har vi programmet 'rm' (også omtalt i afsnittet om kommandoer). For at finde de filer vi skal slette benytte vi os af 'find' og får lavet os en kommando der ser således ud:

find /tmp \! -type d -atime +3 -exec rm -rf {} \;

Du skal ikke tænke for meget over hvad denne kommando gør: Det vigtige i dette afsnit er hvordan vi får den kørt på bestemte tidspunkter.

Vi vil altså gerne have kommandoen kørt en gang hver nat kl. 01:00. Derfor skal vi have rettet vores crontab til at køre denne kommando. Først starter vi 'crontab' op (vi kører den som root da vi skal have adgang til at slette andre brugeres filer også):

debian:~# crontab -e

En editor vil nu åbne crontab-filen så du kan rette i den. Som standard er det normalt vi editoren, hvis du vil ændre dette skal du bruge 'export EDITOR=navn' hvor 'navn' er navnet på din yndlings editor.

Hver linie i filen beskriver hvilken kommando der skal køres på hvilket tidspunkt. Linien har et bestemt format bestående af seks felter:

minut  time  dag  måned  ugedag  kommando

Herunder gennemgår vi parametrene én for én:

  • Minuttal (0-59)
  • Timetal (0-23)
  • Dag på måneden (1-31)
  • Måned (1-12 eller navnet på måneden: jan, feb, mar, apr, may osv.)
  • Ugedag (0-6 hvor 0 er søndag. Derudover kan du benytte: mon, tue osv.)
  • Kommando der ønskes udført

Der kan benyttes nogle specielle værdier for tids-parametrene. Hvis du f.eks. ønsker at samtlige muligheder skal benyttes angives dette med en stjerne (*). Derudover kan du separere flere værdier for hver parameter med et komma (ex: 4,7,13,18). Derudover kan du også angive hele rækker af tal vha. - (ex: 4-9). Denne kan kombineres med / der gør det muligt at køre en række med et vist antal steps (ex: 2-10/2 vil give samme effekt som 2,4,6,8,10).

For nu at vende tilbage til vores egentlige formål, skulle vi have lavet en linie der skulle udføres kl. 01.00 hver nat. Givet det der blev gennemgået i forrige afsnit bliver det så:

0  1  *  *  *  find /tmp \! -type d -atime +3 -exec rm -rf {} \;

Hvis du ønsker videre læsning kan du kigge i følgende manualsider: crontab(5), crontab(1) og cron(8).