Cron is een programma dat herhaaldelijk op een bepaalde tijd een programma start. Het is meestal gebruikt voor het starten van bepaalde scripts zoals makewhatis of om een backupscript te starten. Het is een daemon, en zoals andere daemons blijft het programma in het geheugen slapen, totdat het een tijd is die in het configuratiebestand crontab is gespecificeerd is.
At is een programma waarmee eenmalig een programma kan worden uitgevoerd op een bepaalde tijd. De daemon atd zorgt hiervoor.
In de meeste linuxsystemen is
cron een standaard geinstalleerde
daemon. Je kunt zelf cron starten of stoppen met
service crond start
respectievelijk
service crond stop
Je kunt op een simpele manier controleren of cron aktief is
[paul@deimos vervolg]$ ps aux |grep crond
root 3925 0.0 0.2 1448 604? Ss 17:39 0:00 crond
paul 10680 0.0 0.3 1932 780 pts/0 R+ 20:59 0:00 grep crond
De bovenste regel laat zien dat
cron daemon aktief is.
De tijdstippen waarop een
programma moet worden gestart is
opgeslagen in het bestand crontab . Oorspronkelijk was er slechts een :
/etc/crontab
. Dit was de systeem-crontab. In de meeste moderne linuxen (in ieder
geval in Mandrake 9.2) wordt de systeemcrontab niet meer gewijzigd en
zijn er een aantal directories aanwezig.
In deze directories kan de
systeembeheerder scripts zetten, die dan
vervolgens elk uur, elke dag, elke maand en elke week worden
uitgevoerd.
Een regel in de systeem-crontab heeft de volgende vorm.
minuut uur maanddag maand weekdag gebruiker commando
Hierbij staat minuut, uur,
maanddag, maand, weekdag voor een bepaald
tijd waarop commando
moet
worden gestart, en dat gebeurt onder de gebruikersnaam gebruiker
. In de meeste gevallen
zullen de commandos in de systeem-crontab worden gestart als de
gebruiker root.
Bovendien is er een voor elke
gebruiker een gebruikers-crontab. Een
normale gebruikers kan hiermee zijn eigen taken starten op elk gewenst
tijdstip. Deze crontab is voor de gebruiker verborgen, maar er is het
commando crontab
beschikbaar met 3 belangrijke opties. Hiermee kan elke gebruiker zijn
eigen crontab aanpassen. De opties zijn gebruikt als volgt.
Een regel in de gebruikers-crontab heeft de volgende vorm.
minuut uur maanddag maand weekdag commandoIn elk van de eerste vijf waarden kan een getal worden ingevuld. Dit staat voor de respectievelijke waarde waarop commando wordt uitgevoerd.
Een voorbeeld:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.13906 installed on Tue Apr 26 22:08:07 2005)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# ik laat dit herhaaldelijk uitvoeren
* * * * * export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`"
Er zijn bovendien enkele regels zichtbaar die beginnen met # . Dit zijn commentaar regels en hebben verder geen betekenis voor cron. De onderste regel zorgt ervoor dat elke minuut (!) het commando export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`" wordt uitgevoerd. Dit commando brengt elke minuut een venster op het scherm binnen X windows met de datum en tijd.
De opdracht export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`" bestaat uit drie opdrachten:
De eerste opdracht zet een variabele waardoor programmas weten hoe ze uitvoer op de grafische omgeving kunnen brengen. De tweede opdracht kdialog zet vervolgens een boodschap op het scherm. Kdialog voert ook date uit en de uitvoer daarvan wordt in een venster zichtbaar gemaakt.
Nog enkele voorbeelden.
30 19 * * * export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`"
Dit voert het commando uit op elke dag om 19:30 .
0 * * * 1 export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`"
Dit voert het commando uit op elke maandag (weekdag 1) op elk heel uur (minuut 0).
Er zijn nog enkele bijzondere notaties die je hier kunt gebruiken, om herhalingen of reeks aan te geven.
0 20 1,15 * * export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`"
Dit voert het commando uit om 8 uur 's avonds op elke 1e en 15e dag (1,15) van de maand.
*/10 * * 1-6 * export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`"
Dit voert het commando uit elke 10 minuten (*/10) op elke dag in de eerste 6 maanden van het jaar.
*/10 * * 1-6 * export DISPLAY=:0.0; kdialog --msgbox "Het is nu `date`"
Dit voert het commando uit elke 10 minuten (*/10) op elke dag in de eerste 6 maanden van het jaar.
Het commando crontab -e laat je de crontab bewerken in de standaard editor vi . Als dit niet naar je zin is, dan kun je een andere editor naar eigen smaak kiezen. Dit gaat door het zetten van de environment variabele EDITOR de waarde te geven met de naam van een andere editor. Om de grafische editor Kate te kiezen, pas EDITOR aan volgt aan.
$ set EDITOR=kate
Doe vervolgens om crontab te bewerken
$ crontab -e
en nu wordt niet vi gestart
maar verschijnt de grafische editor
Kate. Uiteraard moet hierbij wel de grafische omgeving X aktief zijn.
[paul@deimos etc]$ at 10:47PM
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> export DISPLAY=:0.0; kdialog --msgbox "hallo"
at>
job 4 at 2005-04-26 22:47
at
http://www.netadmintools.com/art26.html