next up previous contents index
Volgende: 8.12 Laptops Omhoog: 8 Systeemconfiguratie en -administratie Vorige: 8.10 At   Inhoudsopgave   Index


8.11 Cron

Cron is een service waarbij je met vaste regelmaat een opdracht kunt laten uitvoeren. Dit is bijvoorbeeld handig voor het maken van een backup of het opruimen van tijdelijke en logbestanden. Er is een configuratiebestand waarin staat wanneer cron wat moet doen: /etc/crontab. Het is niet zo dat als dat bestand bestaat alles meteen volgens deze planning wordt uitgevoerd. Je moet het bestand eerst laden. Dat doe je met crontab -u user bestandsnaam. Elke user kan dus een eigen cronbestand hebben geladen. Met crontab kun je ook een lijst opvragen en het laden ongedaan maken. In RedHat zit het als volgt in elkaar. Er staan subdirectories in /etc zoals /etc/cron.daily. In /etc/crontab staat dat alles in die directory elke dag moet worden uitgevoerd. Wil je dus iets toevoegen dan hoef je niet /etc/crontab aan te passen, maar zet je de opdracht in een script in de directory /etc/cron.daily. Eenvoudiger kan het niet. Sommige programma's die bijvoorbeeld logbestanden bijhouden zetten zelf ook een scriptje in een van deze cron directories om de logbestanden regelmatig op te schonen. (Wil je zaken op andere tijden laten uitvoeren, dan moet je die zelf toevoegen aan /etc/crontab.)

Een voorbeeldscript:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/

# run-parts
# minute, hour, day of month, month, day of week
*/10   *    * * * root run-parts /etc/cron.d
14     *    * * * root run-parts /etc/cron.hourly
00     19   * * * root run-parts /etc/cron.daily
06     19   * * 0 root run-parts /etc/cron.weekly
10     19   0 * * root run-parts /etc/cron.monthly

Het gaat hier om de laatste 5 regels. Een uitleg per regel:

  1. elke 10 minuten worden de scripts uitgevoerd die in de directory /etc/cron.d/ staan
  2. elke 14e minuut van een uur worden de scripts in /etc/cron.hourly/ uitgevoerd
  3. elke dag om 19:00 uur worden de scripts in /etc/cron.daily/ uitgevoerd
  4. elke eerste dag van de week om 19:06 uur worden de scripts in /etc/cron.weekly/ uitgevoerd
  5. elke eerste dag van de maand worden om 19:10 uur de scripts in /etc/cron.monthly/ uitgevoerd

In plaats van het gebruik van directories is het natuurlijk ook mogelijk om direct in het crontab-bestand de opdracht te geven die uitgevoerd moet worden. Dat zul je ook wel moeten doen als je iets met een andere regelmaat wilt laten uitvoeren. Stel dat je elke werkdag om 7 uur 's ochtends gewekt wilt worden met een mp3-bestand dan kun je de volgende regel gebruiken:

0 7 * * 0-5 mpg123 /home/piet/mp3/*

Opmerking: de deamon anacron zorgt ervoor dat cronjobs altijd worden uitgevoerd. Stel dat je PC om 3 uur 's nachts uit staat en dat er dan een cronjob zou zijn om de logfiles te rotaten, dan zou deze met de gewone cron niet worden uitgevoerd. Met anacron gebeurt dat wel zodra de PC weer aangezet wordt.

Voor meer informatie zie man cron en man crontab.


next up previous contents index
Volgende: 8.12 Laptops Omhoog: 8 Systeemconfiguratie en -administratie Vorige: 8.10 At   Inhoudsopgave   Index
Jarkko Huijts 2002-08-17