Top Menu » helpdesk » hosting » crontabs

Crontabs

Wat is een crontab?

Op vrijwel alle linux servers draait een programma dat commando's kan uitvoeren op door de gebruiker bepaalde tijden. Zo is het mogelijk om iedere nacht een backup te laten maken, elke minuut externe mailboxen te controleren of elke vrijdag een mailing te versturen. Elke gebruiker van een systeem kan zijn eigen crontab/cronjob beheren door een tekstbestand te bewerken waarin de tijden en de uit te voeren commando's staan.

Bij Nxs Internet kunt u op shell.nxs.nl een crontab instellen.

Hoe werkt de crontab?

Elke regel in uw crontab betekent letterlijk 'draai dit commando op deze tijd'. Deze regels worden als volgt gedefinieerd:

	[minuut]	[uur]	[dag v/d maand]	[maand]	[dag v/d week]			[commando]
	0-59		0-23  	1-31		1-12	0-7 (0 en 7 zijn zondag)	/pad/naar/script

Let op: Elke regel wordt afgesloten door een regeleinde (Enter), anders is hij niet actief.

Hierbij zijn een paar opmerkingen te maken:

In plaats van een getal mag ook een wildcard, een '*' worden opgegeven, daarmee wordt elke waarde van het betreffende veld bedoeld. Een * bij het minutenveld betekent dan 'elke minuut'. Het volgende commando laat elke minuut het script 'draaimij.sh' uitvoeren:

	* * * * * /home/gebruikersnaam/draaimij.sh

Het is ook mogelijk om een kommagescheiden lijst van waardes op te geven, de volgende regel laat om 09:05 en 17:05 het script draaien:

	5 9,17 * * * /home/gebruikernaam/draaimij.sh

Het koppelteken kan ook gebruikt worden om een reeks te definieren, deze regel laat elke minuut van 9:00 tot met 16:59 het commando draaien:

	* 9-16 * * * /home/gebruikersnaam/draaimij.sh

Het is ook nog mogelijk om stappen op te geven met een slash, zie volgende commando:

	*/7  * * * 1 /home/gebruikersnaam/draaimij.sh

Dit is ook te schrijven als:

	0-59/7 * * * 1 /home/gebruikersnaam/draaimij.sh

En betekent het volgende:

	0,7,14,21,28,35,42,49,56 * * * 1 /home/gebruikersnaam/draaimij.sh

Het is ook nog mogelijk de namen van de dagen en de maanden te gebruiken, hierdoor kan het bovenstaande leesbaarder gemaakt worden door er het volgende van te maken:

	*/7 * * * monday /home/gebruikersnaam/draaimij.sh

Opmerking: De dagen worden op twee verschillende manieren gedefinieerd, wat tot verwarring kan leiden. De regel die hier gevolgt moet worden is:
als beide velden geen wildcard bevatten (een '*'), is de combinatie van de velden actief. Zie de volgende regel:

	* * 1,10 * 5 /home/gebruikersnaam/draaimij.sh

Hiermee draait het script:

  • elke minuut op de eerste en de tiende van elke maand, en
  • elke minuut op elke vrijdag

Verder is het mogelijk opmerkingen toe te voegen met een '#' aan het begin van de regel, bijvoorbeeld:

	#dit is een opmerking
	* * 1,10 * 5 /home/gebruikersnaam/draaimij.sh

Hoe stel ik mijn crontab bij NXS in?

Als eerste dient u ingelogd te zijn op shell.nxs.nl met een SSH verbinding. Hoe dat moet is te lezen onder het kopje 'SSH' bij de helpdesk op onze
website.

Als u ingelogd bent kan u de crontab bekijken met het commando 'crontab -l', met het commando 'crontab -e' kan u de tekst bewerken.
Nogmaals voor de duidelijkheid: elke regel moet met een regeleinde (Enter) worden afgesloten, anders is hij niet actief.

U kunt in insert mode komen door op 'i' te drukken. Als u klaar bent met het invoeren van uw regels, kunt u uit insert mode gaan door 'Esc' in te drukken, daarna wordt het bestand opgeslagen door [SHIFT] z (2x) in te drukken.

Een goede manier om te testen of uw crontab werkt is het commando 'touch', dat de datum van bestanden naar de huidige tijd wijzigt en bestanden
aanmaakt als ze nog niet bestaan.

Het volgende commando zou elke minuut 'bestand' moeten aanmaken:

	* * * * * touch /home/gebruikersnaam/bestand

Door de bestanden te bekijken kan u zien wanneer het script is uitgevoerd. Dit kan door op shell.nxs.nl het commando 'ls -l' uit te voeren, waarna u een lijst krijg met alle bestanden en de datum:

	[gebruikersnaam@shell ~]$ ls -l
	total 0
	-rw-r--r--    1 gebruikersnaam     vhosting        0 Feb 24 14:52 bestand
	[gebruikersnaam@shell ~]$



Print this page
 
 
Terugbellen