Navigatie overslaan.
Start

(Ana)cron

In Linux kan je sinds jaar en dag Cronjobs gebruiken om bepaalde taken op bepaalde tijdstippen uit te voeren.
Dit is geen eenmalige scheduling, maar een steeds herhalende taak, bijvoorbeeld het zoeken naar updates/patches, het versturen van een statusmail, enz...

(Voor eenmalige dingen kan je het "at"-commando gebruiken, vb: "at teatime ...".)

Op zich is Cron vrij krachtig.
Het heeft een resolutie van 1 minuut, en je kan taken uitvoeren op een bepaald tijdstip (Om 13:48h), een bepaalde datum (Op 1 April), of een bepaalde dag in de week (op Zondag).
Uiteraard kan je ook wildcards gebruiken (Iedere 1ste van de maand, telkens op 56 minuten na het uur), of combinaties (Iedere vrijdag die ook de 13de dag van de maand is).

Om dat te doen moet je 5 cijfertjes invullen voor het commando dat je wil laten uitvoeren.

Zie hiervoor de handleiding van cron.

In de meeste distributies zijn er reeds standaard entries aanwezig die alle scripts uit een bepaalde directory zullen uitvoeren.
Er is een directory voor dingen die ieder uur moeten gebeuren, dagelijks, wekelijks, enz...
Om iets dagelijks te laten geschieden, hoef je dus enkel jouw scriptje (of een link ernaar) in de juiste directory te zetten.

Cron heeft echter 1 grote zwakte: Als je PC uit staat, dan wordt er niets uitgevoerd. En voor sommige taken kan dat een probleem opleveren om dat jouw wekelijkse taken die normaal op zondag nacht gebeuren, helemaal niet gaan gebeuren voor tenminste 1 week.
Ook niet als de PC vanaf maandag ochtend voor de rest van de week aan blijft staan.

Gelukkig is hier een oplossing voor: Anacron.

Anacron is geen daemon. Het draait dus niet constant, maar wordt meestal uitgevoerd bij het opstarten van de PC.
Het heeft een resolutie van 1 dag, dus het is niet geschikt voor dingen die vaker moeten gebeuren.

Anacron houdt een timestamp bij van wanneer zijn taken voor de laatste keer werden uitgevoerd. Bij het starten van Anacron wordt dit nagekeken, alsook de gewenste frequentie van de taak. Indien nodig wordt de taak uitgevoerd en de timestamp aangepast.

Als je je PC dagelijks opstart, dan kan je Anacron op exact dezelfde manier gebruiken als Cron, en is dit zelfs een vervanging ervan.

Als je een servertje hebt, dat soms uitgeschakeld wordt, maar soms ook enkele dagen blijft draaien, dan moet je een combinatie van Anacron en Cron gebruiken, want Anacron wordt niet uitgevoerd als de PC blijft aanstaan.

De makkelijkste manier is om dezelfde configuratie te gebruiken voor Cron en Anacron, waarbij dagelijks/wekelijks/... alle scripts in een bepaalde directory worden uitgevoerd.
Voor Cron komt daar nog iets extra's bij en dat is om Anacron aan te roepen met de "-u" parameter, waarbij Anacron gevraagd wordt op zijn timestamps te updaten.

In het kort komt het dus hier op neer:
Als de server blijft aanstaan, dan zorgt Cron ervoor dat alle taken uitgevoerd worden, en dat Anacron weet dat de taken op een bepaald tijdstip werden uitgevoerd.
Als de server voor een tijdje uitstaat, en opnieuw wordt opgestart, zal Anacron zien wanneer deze taken voor het laatst werden uitgevoerd, en indien nodig sommige taken uitvoeren die overtijd zijn.

Op die manier werkt alles netjes samen...