Tags voor dit FAQ item:
CentOS Cron Linux

Help ons door dit artikel te beoordelen!

Geef als eerste je beoordeling!

Een geplande taak (cron job) instellen op Linux met behulp van de cron service

Laatste bijgewerkt: 02/06/2016

Cron is een applicatie die geplande taken op het geconfigureerde tijdstip uitvoert op Linux systemen. De "crontab" (Cron Table) is een configuratiebestand waarin deze geplande taken ingesteld worden.

Door te werken met een cron job (of geplande taak) kan u achter de schermen via de cron service commando's op terugkerende tijdstippen uitvoeren, bijvoorbeeld voor het wissen van cache folders, verplaatsen van bestanden, lanceren van een backup script, synchronisatie van mappen...

Elke gebruiker beschikt over een eigen crontab, deze kan eenvoudig gebruikt worden aan de hand van het crontab commando:

Wijzigen van een crontab:             crontab -e
Weergave van de crontab: crontab -l
Verwijderen van de volledige crontab: crontab -r

In een crontab bestand staat elke regel voor een geplande taak. De regel start steeds met de definitie van het tijdstip.
De vorm van een regel lijkt in het eerste zicht intimiderend, echter de opbouw is logisch.
Een crontab regel bestaat uit 6 velden, welke telkens gescheiden worden door witte ruimtes (één of meerder spaties of tabs).

+------------- minuten (0 - 59) 
¦ +-------------- uren (0 - 23)
¦ ¦ +--------------- dag van de maand (1 - 31)
¦ ¦ ¦ +---------------- maand (1 - 12)
¦ ¦ ¦ ¦ +----------------- weekdag (0 - 6) (0 is zondag, 1 is maandag, ..., 7 is eveneens zondag)
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
* * * * * /usr/bin/opdracht

Een correcte regel kan er dus als volgt uit zien:

04 11 * * 3     /usr/sbin/ntpdate pool.ntp.org 2>&1 >/dev/null

De bovenstaande regel zorgt er voor dat éénmaal per week, namelijk op woensdag (3) om 11u04 de opdracht "/usr/sbin/ntpdate pool.ntp.org 2>&1 >/dev/null" uitgevoerd dient te worden.
De notatie "2>&1 >/dev/null" achteraan de opdracht maakt deel uit van de opdracht zelf en zorgt er voor dat de output van de opdracht niet doorgegeven wordt aan de console (Linux output redirection).

Wenst u een bepaalde regel tijdelijk niet meer te gebruiken, maar toch in het bestand te laten?
Dan kan u deze regel in commentaar zetten. Dit kan door "#" voor de regel te zetten.

#04 11 * * 3     /usr/sbin/ntpdate pool.ntp.org 2>&1 >/dev/null

Naast de crontab van de gebruiker kunnen er ook cronjobs voor het systeem aangemaakt worden.
Hierbij wordt gebruik gemaakt van een extra veld om aan te duiden als welke gebruiker deze cron uitgevoerd dient te worden.
In dit voorbeeld stellen we dat de taak uitgevoerd zal worden door de gebruiker 'root'.
(De 'root' gebruiker heeft alle rechten op het systeem! Daarom is het vanuit beveiligings opzicht niet de beste oplossing om deze geplande taken uit te laten voeren. We gebruiken deze echter in dit voorbeeld omdat deze gebruiker steeds aanwezig is.)

04 11 * * 3 root /usr/sbin/ntpdate pool.ntp.org 2>&1 >/dev/null

De crontabs voor het systeem kan u meestal op volgende locaties instellen:

1. Het crontab bestand

/etc/crontab

Bovenstaande is de locatie voor het crontab bestand onder de systeemconfiguratie.

2. Onder de cron.d mappen

/etc/cron.d/

Bovenstaande is een map waar verschillende crontab bestandjes geplaatst kunnen worden, deze worden dan door cron uitgevoerd.

3. In specifieke mappen die reeds een tijdstip meegeven

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

Dit zijn vooraf bepaalde tijdstippen. Let op met deze bestanden, hier hoeft u geen tijdtip te bepalen.
U kan gewoon Linux shell scripts in deze mappen plaatsen, deze worden dan op het geplande tijdstip uitgevoerd!

Het daadwerkelijk aanwezig zijn of uitgevoerd worden van deze mappen hangt af van uw Linux distributie.

De definitie in verband met deze mappen (gebruiker, tijdstip) is meestal te vinden in /etc/crontab.