Taken automatiseren met cronjobs

Trefwoorden: Linux, Unix, Cron, Crontab, Cronjobs, Cronjob
Wat is cron?

Cron is een soort taakbeheer voor Unix. Als je bepaalde opdrachten of scripts (PHP, Perl, ...) op bepaalde tijdstippen moet uitvoeren, dan kun je dat met dit commando. Om van Cron gebruik te kunnen maken moet je shell-toegang (telnet) hebben tot de server en moet die natuurlijk cronjobs ondersteunen. Doorgaans ondersteunen de meeste hostingbedrijven dit wel.

Crontab

Cron is het proces dat deze opdrachten uitvoerd. Crontab is de tabel, of de database, die de verschillende opdrachten en de tijdstippen waarop ze uitgevoerd moeten worden, bijhoudt. Dit alles bevindt zich in een bestand. Het bestand kiezen dat jouw commando's bevat doe je met:
CODE
  1. robke@multidesk:~$ crontab bestandsnaam
Crontab heeft drie mogelijke parameters:

  • -e om je crontab-bestand te bewerken
  • -l om je crontab-bestand te bekijken
  • -r om je crontab-bestand te verwijderen en alle cronjobs te annuleren

Je crontab-bestand kun je ook gewoon bewerken met een andere editor op je PC en uploaden, of via de shell met Vi. Let wel op dat je in Windows het bestand opslaat als ASCII.

De notatie

In het bestand dat je aangeduid hebt met crontab, plaats je de verschillende opdrachten of "cronjobs". Zo'n opdracht ("cronjob") bestaat uit zes onderdelen:

DeelWaardeVerklaring
Minuut0-59Op welke minuut de opdracht zal uitgevoerd worden
Uur0-23Op welk uur de opdracht zal uitgevoerd worden
Dag1-31Op welke dag van de maand de opdracht zal uitgevoerd worden
Maand1-12Welke maand van het jaar de opdracht zal uitgevoerd worden
Weekdag0-6Op welke dag van de week. (zondag = 0, maandag = 1, dinsdag = 2, enz.)
OpdrachtcommandoHet Unix-commando dat uitgevoerd moet worden

Elk onderdeel kan een asterisk (*) zijn (dan wordt het elke minuut/uur/dag/maand/weekdag uitgevoerd), één bepaalde waarde, of verschillende waarden gescheiden door komma's. Elk van de zes onderdelen is gescheiden door een spatie of een tab.

Één commando ziet er dus zo uit:
CODE
  1. minuut uur dag maand weekdag opdracht
Verschillende commando's moeten natuurlijk elk op een eigen regel.

Wat bij foutmeldingen?

Bovenaan je crontab-bestand kan je deze regel zetten:
CODE
  1. MAILTO=jouw@e-mail.adres
Dan zal je een mail krijgen met de foutmelding als er zich een fout heeft veroorzaakt...

Let op!

  • Op het einde van je crontab-bestand moet je altijd een witregel laten (één keer op enter drukken).
  • Omdat Cron als root draait, moet je altijd de volledige padnaam opgeven in je commando (beginnende vanaf "/").
  • Zet je crontab-bestand nooit in /www/ of /cgi-bin/ want dan wordt het elke keer uitgevoerd wanneer iemand je site bezoekt.

Voorbeelden
CODE
  1. 0 12 15 * 6 /home/robke/onderhoud.sh
Het shellscript "/home/robke/onderhoud.sh" zal uitgevoerd worden om 12 uur 's middags op de 15de van de maand, maar enkel wanneer die dag op een zaterdag valt.
CODE
  1. 0 0 1,15 * 1 /www/cgi-bin/archief.php
Archief.php zal uitgevoerd worden op de eerste en de vijftiende dag van elke maand én op elke maandag.
CODE
  1. 59 23 * * * /home/neo/cronjobs/backup.sh
Dit zal uitgevoerd worden om 23u59 elke dag van elke maand.Dit artikel werd geschreven door rObkE op vrijdag 30 juli 2004 om 20:09 en werd sindsdien 14384 keer gelezen.

  • Pagina
  • 1 van 1

Bericht geplaatst door een gast op dinsdag 21 december 2004 om 17:54:29.
Maar , Waar moet je je Unex parameters dan plaatser *-) ?
En , Als je die command bv : 0 12 15 * 6 /home/robke/onderhoud.sh neemt ,
Waar moet je die dan plaatsen dat die werkt ?
In je admin panel ?
Bericht geplaatst door rObkE op zaterdag 25 december 2004 om 01:28:21.
rObkE heeft nog geen avatar toegevoegd
Multiviteit: 3765
Commando's geef je in in de console/terminal... (hmm) :?
Deze tekst werd het laatst bewerkt voor 8 % door rObkE op zaterdag 25 december 2004 om 01:28:29.
Bericht geplaatst door een gast op vrijdag 31 december 2004 om 11:08:43.
hoe kan je de naam van de crontab achterhalen? (als je hem reeds hebt aangemaakt en naam niet meer weet?)
Bericht geplaatst door een gast op maandag 28 februari 2005 om 10:24:56.
Kun je doormiddel van php ook cronjobs laten maken.
Bijvoorbeeld dat je een mail wilt sturen vannacht om 3 uur.
En dat je dit elke week weer wilt laten veranderen. Dus de tijd word bepaald door variabelen die je laat instellen door een gebruiker.
Bericht geplaatst door rObkE op zondag 6 maart 2005 om 16:26:36.
rObkE heeft nog geen avatar toegevoegd
Multiviteit: 3765

Dixit

Gast (op 28/02/2005 10:24:56) zei:
Kun je doormiddel van php ook cronjobs laten maken.
Bijvoorbeeld dat je een mail wilt sturen vannacht om 3 uur.
En dat je dit elke week weer wilt laten veranderen. Dus de tijd word bepaald door variabelen die je laat instellen door een gebruiker.
Moet wel gaan met een shell script of zo, maar vraag mij persoonlijk niet hoe. :)
Probeer eens op de forums misschien.
  • Pagina
  • 1 van 1