Crontab bewerken
Met crond kun je op vaste tijden opdrachten uit laten voeren door het systeem. Debian gebruikt zelf ook crond, bijvoorbeeld om logfiles om de zoveel tijd op te schonen. Om te zien wat er nu in je crontab staat:
crontab -l
om je eigen crontab te bewerken gebruik je
crontab -e
Cron maakt hiermee een kopie van je crontab bestand. Als je die kopie opslaat voert cron een syntaxcontrole uit en als dat goed gaat wordt je crontab teruggezet waar hij hoort: /var/spool/cron/crontabs/. Je ziet dan de mededeling:
crontab: installing new crontab
Je kunt ook de crontab van een andere gebruiker bekijken, als je tenminste ingelogd bent als root:
crontab -u janweijers -l
Om de crontab van een andere gebruiker te bewerken gebruik de je -e optie in bovenstaande opdracht in plaats van -l
Opdracht toevoegen
Een opdracht in een crontab bestaan uit vijf kolommen voor de tijd en één kolom voor de opdracht. De tijd stel je alsvolgt in:
Minuut | * voor elke minuut of 0-59 |
Uur | * voor elke uur of 0-23 |
Dag van de maand | * voor elke dag of 1-31 |
Maand | * voor elke maand of 1-12 |
Dag van de week | * voor elke dag of 0 (zondag) - 6 (zaterdag) |
* * * * * /etc/eenscript.sh | elke minuut eenscript.sh |
0 9,18 * * * /etc/eenscript.sh | elke dag om 9:00 en 18:00 eenscript.sh |
0 2 15 * * /etc/phpkanook.php | elke 15e van de maand om 2:00 phpkanook.php |
Om een shell script uit te voeren moet de eerste regel van dat script zijn:
#!/bin/sh
En van een php script moet de eerste regel zijn:
#!/usr/bin/php5
Deze regels vertellen het systeem welke software (sh of php) het script uit moet voeren.
Daarnaast moet je er voor zorgen dat het script uitvoerbaar, 'executable' is:
chmod +x /etc/phpkanook.php
chmod +x /etc/eeenscript.sh
log files
Crontab maakt 'uit de doos' geen eigen logbestand. Je kunt dat instellen door eerst een logfile voor crontab aan te maken:
nano /var/log/crontab.log
je hoeft niets in het bestand te zetten, sla gewoon het lege bestand op. Bewerk vervolgens rsyslog.conf. Hier bewaart Debian alle instellingen voor loggen:
cp /etc/rsyslog.conf /etc/rsyslog.conf.backup1 nano /etc/rsyslog.conf
Vervolgens voeg de de volgende regel toe:
cron.* /var/log/crontab.log
Tenslotte moet je nog de rsyslog deamon herstarten:
/etc/init.d/rsyslog restart