Taken Automatiseren met Cron en Crontab bestanden

Zoals de meeste Linux-gebruikers, vind je het wellicht nodig repeterende taken te plannen om op een bepaalde tijd uit te laten voeren. Dergelijke taken kunnen zo frequent als éénmaal per minuut, of zo infrequent als éénmaal per jaar plaatsvinden. Deze planning kan worden bewerkstelligd met behulp van de ``cron'' faciliteiten.

De faciliteiten van cron zoals geïmplementeerd onder Linux zijn tamelijk vergelijkbaar met die in andere Unix-implementaties beschikbaar zijn. Red Hat volgt echter een iets andere wijze in het plannen van taken dan gewoonlijk in andere distributies van Linux wordt gedaan. Net als in andere distributies is de geplande informatie in het systeem geplaatst in het ``crontab'' bestand (te vinden in de directory ``/etc/''), waarbij gebruik wordt gemaakt van het volgende formaat:

minuut uur dag maand jaar commando

Je kunt iedere tijdseenheid als een geheel getal opgeven (bv. 1 tot met 12 voor de maanden januari tot en met december), of één of meer onderdelen opgegeven als ``*'' tekens die als jokertekens zullen worden aangemerkt (bv. een * in de maand component betekent dat het commando op iedere gegeven dag en tijd wordt uitgevoerd. Hier zijn wat voorbeelden:

# Mail de systeemlogs om 4:30 's-middags iedere 15e juni.
30 16 15 06 * for x in /var/log/*; do cat ${x} | mail postmaster; done

# Informeer om middernacht de beheerder, over de wijzigende seizoenen.
00 00 20 04 * echo 'Woohoo, het is lente!'
00 00 20 06 * echo 'Yeah, de zomer is aangebroken, tijd om naar het strand te gaan!
00 00 20 10 * echo 'De herfst is aangebroken. Haal de jassen maar tevoorschijn. :-('
00 00 20 12 * echo 'Tijd voor 5 maanden ellende.  ;-('

Merk op dat commando's die uitvoer naar standaarduitvoer produceren (dwz. een terminal) zoals in de voorbeelden hierboven gebruik maken van ``echo'' deze uitvoer naar het ``root'' account zal worden gemaild. Als je dit wilt voorkomen, stuur je de uitvoer gewoon naar het null device, zoals in het volgende voorbeeld:

00 06 * * * echo 'Ik erger dagelijks om 6:00 's-morgens de systeembeheerder!' >/dev/null

In aanvulling op de standaard ``crontab'' entries, voegt Red Hat nog verscheidene directory's toe:

/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/

Zoals de namen al aangeven, kunnen uitvoerbare bestanden in ieder van deze directory's worden geplaatst, en zullen die ieder uur, dagelijks of wekelijks worden uitgevoerd. Dit bespaart een beetje tijd als je regelmatig voorkomende taken instelt; plaats het uitvoerbare script of het programma (of een symbolische link naar één die elders is opgeslagen) in de van toepassing zijnde directory en je hebt er geen omkijken meer naar.