FreeBSD handboek
Terug | Hoofdstuk 12. Instellingen en optimalisatie | Volgende

# 12.6. `cron` instellen

Geschreven door Tom Rhodes.

Een zeer nuttig hulpprogramma in FreeBSD is cron(8). De daemon `cron` draait op de achtergrond en controleert voortdurend `/etc/crontab`. Ook controleert `cron` de map `/var/cron/tabs`, op zoek naar nieuwe `crontab` bestanden. Deze `crontab` bestanden bevatten informatie over specifieke taken die `cron` moet verrichten op gezette tijden.

`cron` gebruikt twee verschillende soorten instellingenbestanden: de systeemcrontab en gebruikerscrontabs. Het enige verschil tussen deze twee formaten is het zesde veld. In de systeemcrontab is dit de gebruikersnaam die het commando uitvoert. Hierdoor kunnen met de systeemcrontab commando's als iedere gebruiker uitgevoerd worden. In een gebruikerscrontab is het zesde veld het uit te voeren commando en alle commando's worden uitgevoerd als de gebruiker die de crontab heeft aangemaakt. Dit is een belangrijke veiligheidsmaatregel.

> Opmerking: Gebruikerscrontabs geven individuele gebruikers de mogelijkheid om bepaalde terugkerende taken automatisch te laten uitvoeren zonder dat `root`-rechten noodig zijn. Commando's in de crontab van een gebruiker worden uitgevoerd met de rechten van de eigenaar.

> `root` kan ook een gebruikerscrontab aanleggen. Dit is niet dezelfde als `/etc/crontab` (de systeemcrontab). Omdat er al een systeemcrontab is, is het doorgaans niet nodig om een gebruikerscrontab voor `root` te maken.

`/etc/crontab` (de systeemcrontab) ziet er uit als volgt:

    # /etc/crontab - root's crontab for FreeBSD
    #
    # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minuut uur     mdag    maand   wdag    wie     commando
    #
    #
    */5     *       *       *       *       root    /usr/libexec/atrun

  Zoals in de meeste FreeBSD instellingenbestanden gaat het karakter `#` vooraf aan commentaar. Commentaar wordt gebruikt als uitleg en geheugensteun. Commentaar dient niet vermengd te worden met commando's, anders wordt het commentaar opgevat als deel van het commando. Blanco regels worden genegeerd.
  Eerst worden omgevingsvariabelen gedefiniëerd. Hoervoor wordt het is-gelijk karakter (`=`) gebruikt. In het bovenstaande voorbeeld wordt het gebruikt voor de variabelen `SHELL`, `PATH` en `HOME`. Als de regel `SHELL` ontbreekt, gebruikt `cron` standaard `sh` als shell. Voor de omgevingsvariabele `PATH` bestaat geen standaardwaarde. Als `PATH` ontbreekt moeten absolute paden gebruikt worden. Als `HOME` ontbreekt, gebruikt `cron` de thuismap van de gebruiker die `cron` aanroept.
  In deze commentaarregel staan de zeven velden van een crontabdefinitie. Dit zijn `minuut`, `uur`, `mdag`, `maand`, `wdag`, `wie` en `commando`. De betekenissen liggen voor de hand: `minuut` is het aantal minuten van het tijdstip waarop het commando moet worden uitgevoerd; `uur` geeft het uur aan; `mdag` staat voor de dag van de maand; `maand` staat voor het maandnummer en `wdag` geeft de dag van de week aan. Het veld `wie` is bijzonder en bestaat alleen in `/etc/crontab`. Het geeft aan als welke gebruiker het commando uitgevoerd moet worden. Een gebruiker die zijn eigen `crontab` installeert, heeft deze optie niet. Het veld `commando` bevat het uit te voeren commando.
  In deze regel worden aan de hierboven besproken opties waarden toegekend. Er wordt gebruik gemaakt van `*/5` en `*` karakters. Deze betekenen eerst-laatst en kunnen gezien worden als telkens. In deze regel staat dus dat het commando `atrun` elke vijf minuten moet worden uitgevoerd door `root`, ongeacht welke dag of maand het is. Meer informatie over `atrun` staat in atrun(8).

  Commando's kunnen een willekeurig aantal opties of argumenten meekrijgen. Als commando's echter meerdere regels nodig hebben moeten deze regels afgebroken worden met een backslash \ karakter, om aan te geven dat ze op de volgende regel vervolgd worden.

Dit is de basisopzet voor elk `crontab` bestand. De enige uitzondering is de aanwezigheid van veld zes, waar de gebruikersnaam wordt aangegeven. Dit veld bestaat alleen in het systeembestand `/etc/crontab`. Voor `crontab`bestanden van individuele gebruikers moet dit veld worden weggelaten.

## 12.6.1. Een crontab installeren

> Belangrijk: De onderstaande procedure moet niet gebruikt worden om de systeemcrontab te wijzigen of te installeren. Er kan een gewone editor gebruikt worden. `cron` ziet dat het bestand veranderd is en begint direct met het gebruiken van de nieuwe versie. Deze FAQ vraag geeft verdere uitleg.

Om een nieuwe `crontab` te installeren moet eerst een bestand in het juiste formaat gemaakt worden en daarna moet het geiuml;nstalleerd worden met commando `crontab`:

    # crontab crontabbestand

In dit voorbeeld is `crontabbestand` de naam van een eerder gemaakt `crontab`-bestand.

Er bestaat ook een optie om een lijst van geïnstalleerde `crontab`-bestanden op te vragen, namelijk de optie `-l` van `crontab`.

Gebruikers die hun eigen crontabbestand willen schrijven zonder het gebruik van een sjabloon, kunnen gebruik maken van `crontab -e`. Dit opent de `EDITOR` met een leeg bestand. Als het bestand wordt opgeslagen en de editor wordt afgesloten, wordt het bestand automatisch als `crontab` geïnstalleerd.

Een gebruikers`crontab` kan verwijderd worden door de met `crontab` de optie `-r` te gebruiken.

Terug | Begin | Volgende
Diensten starten | Omhoog | Gebruik van rc met FreeBSD