Een shell-script op bepaalde tijden uitvoeren
Als je een shell-script op bepaalde tijden wilt uitvoeren, gebruik je launchd
of cron
.
Taken plannen met 'launchd'
Gebruik
launchd
in plaats vancron
om taken te plannen. Als jelaunchd
gebruikt en een taak wordt overgeslagen omdat de computer is uitgeschakeld of in de sluimerstand staat, wordt de taak toegevoegd aan de wachtrij wanneer de computer weer online komt.Als je
launchd
wilt gebruiken voor het plannen van taken op basis van een timer, gebruik je de sleutelStartCalendarInterval
ofStartInterval
.Raadpleeg de man-pagina van
launchd
voor meer informatie over de tool.
Taken plannen met 'cron'
Met de daemon cron
kun je geplande commando's uitvoeren die in crontab-bestanden zijn gedefinieerd. De daemon cron
zoekt in de map '/usr/lib/cron/tabs/' naar crontab-bestanden die zijn vernoemd naar accounts in '/etc/passwd', waarna de bestanden in het geheugen worden geladen. De daemon cron
zoekt ook in de map '/etc/crontab/' naar crontab-bestanden, die een andere structuur hebben. Deze zoekbewerkingen van cron
worden om de minuut herhaald, waarbij de opgeslagen crontab-bestanden worden geanalyseerd en er wordt gekeken of er commando's zijn die in deze minuut moeten worden uitgevoerd.
Als dat het geval is, wordt de uitvoer per e-mail verstuurd naar de eigenaar van het crontab-bestand of naar de gebruiker die wordt genoemd in de optionele omgevingsvariabele MAILTO in het crontab-bestand.
Je gebruikt de tool crontab
om de tabellen te installeren, te verwijderen of weer te geven die worden gebruikt om de daemon cron
aan te sturen. Gebruikers kunnen hun eigen crontab-bestand hebben.
Om je crontab-bestand te configureren, gebruik je het commando
crontab -e
. Er wordt dan een leeg crontab-bestand geopend in de bewerkingsmodus.Hier zie je een voorbeeld van een crontab-bestand:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
In dit voorbeeld worden met de eerste vermelding de schijfbevoegdheden voor het volume 'MacHD' elke dag, van maandag tot en met vrijdag, om 18.30 uur hersteld:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
Met de tweede vermelding wordt een herstelbewerking voor het volume gepland, die elke zondag om 23.50 uur moet worden uitgevoerd:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD