GoodSoft Development Banner

Plannen met cron

Door Ives van der Flaas

Inhoudsopgave
1.Wat is cron en waar is het goed voor?
2. Kijken of cron draait op je systeem
3. Cronjobs toevoegen en verwijderen
4. Voorbeelden
5. FAQ (Frequently Asked Questions)
6. Slot

1. Wat is cron en waar is het goed voor?
Cron, afgeleid van het griekse woord chronos (tijd), is een programma dat taken die je vooraf hebt opgegeven uitvoert op een welbepaalde tijd. Het is heel handig voor terugkerende taken, stel dat je elke dag een backup van al je bestanden wil maken of elk uur kijken of een bepaalde website nog online is, en zo nee een mail versturen, dan kan dit met cron!

2. Kijken of cron draait op je systeem.
Cron draait op de meeste unix-systemen. Als je wilt weten of het op je systeem draait, moet je een console venster openen en dan typen

ps –A | grep cron

Als dit commando output geeft, is alles in orde en draait cron op je systeem. Als het commando niets doet, probeer dan om

sudo apt-get install cron

in een console venster te typen.

3. Cronjobs toevoegen en verwijderen

Kijk eerst of de cronjob die je wilt toevoegen nog niet in de lijst van cron staat door in een console te typen

cronjob -l

Om alle jobs te wissen, typ dan (dit is permanent! let op!)

cronjob -r

Als de job er niet instaat, typ dan

cronjob -e

 

om je crontab file (soms ook te vinden in /usr/lib/crontab) te bewerken. Het crontab bestand wordt nu geopend in nano of vi. Als het geopend wordt in nano, druk dan CONTROL + O, ENTER, CONTROL + X.
Als het geopend wordt in vi, druk dan ESCAPE en typ

ZZ

Ik kan hier geen hele tutorial schrijven over elke teksteditor die er bestaat, maar moest er echt vraag naar zijn, stuur me dan een berichtje op www.GoodSoft.be/contact.

De volgende syntax voor jobs wordt gebruikt:

#MINUUT #UUR #DAG #MAAND #DAGVDWEEK #COMMANDO

Wat betekenen deze codes?

#MINUUT = de minuut waarop de taak moet worden
#UUR = het uur waarop je de taak wilt uitvoeren
#DAG = de dag van de maand
#MAAND = het nummer van de maand
#DAGVDWEEK = de dag waarop je het commando wil uitvoeren
#COMMANDO = het linux commando dat je wil uitvoeren, mag een script zijn

Wat zijn de geldige waardes die ik kan opgeven?

Als het veld altijd juist is dan geef je * op (als je bijvoorbeeld elk uur iets wil laten gebeuren zet je #UUR op *)

Je kan meerdere waardes scheiden door komma’s, voor voorbeelden, scroll naar beneden. 

Je kan ook aangeven dat een taak bijvoorbeeld elke 2 minuten moet worden uitgevoerd, maar hoe dat moet staat niet in deze tutorial. Als je het toch wil weten, lees dan de man pagina van cron (typ in de console man 5 cron).

#MINUUT         : van 0 tot en met 59
#UUR               : van 0 tot en met 23
#DAG               : afhankelijk van de maand, van 1 tot 28 of 30 of 31
#MAAND          : januari = 1, februari = 2, maart = 3, april = 4, mei = 5, juni = 6, juli = 7, augustus = 8, september = 9, oktober = 10, november = 11, december = 12
#DAGVDWEEK  : zondag = 0, maandag = 1, dinsdag = 2, woensdag = 3, donderdag = 4, vrijdag = 5, zaterdag = 6, zondag = 7 (zondag kan inderdaad op 2 verschillende manieren benoemd worden)
#COMMANDO   : eender welk Linux commando, maar je zal de output niet zien (zie hieronder).

Het commando wordt gestart in een aparte omgeving, je zal dus de output hiervan NIET zien. Het is niet omdat je niets ziet gebeuren, dat er ook effectief niets gebeurt! Als je echt wil weten of er iets mis is met je cron, geef dan een tijdsduur in 2 minuten van nu en geef als commando in

touch ~/cronworks

Kijk na 2 minuten in je home directory of er een bestand genaamd cronworks bestaat, zo ja werkt cron, zo nee is er iets serieus mis of draait de cron daemon niet.

4. Voorbeelden

Ik wil elke dag om middernacht een backup maken. ~/backup is een uitvoerbaar script dat alle bestanden tar’t en dan gzipt.

0 0 * * * ~/backup

Ik gebruik een programma genaamd motion om een webcam te gebruiken als beveiligingscamera die beweging detecteerd. Hoe start ik dit programma elke weekdag om 1 uur ’s nachts?

0 1 1,2,3,4,5 * * motion


5. FAQ (Frequently Asked Questions)

Ik wil firefox/azureus/… elke dag starten, maar ik zie niets gebeuren? Hoe komt dit?

Het commando wordt gestart in een aparte omgeving, je zal dus de output hiervan NIET zien. Het is niet omdat je niets ziet gebeuren, dat er ook effectief niets gebeurt! Als je echt wil weten of er iets mis is met je cron, geef dan een tijdsduur in 2 minuten van nu en geef als commando in

touch ~/cronworks

Kijk nu in je home directory of er een bestand genaamd cronworks bestaat, zo ja werkt cron, zo nee is er iets serieus mis of draait de cron daemon niet.

 

Ik wil een scriptje laten uitvoeren, maar er gebeurt niets, hoe komt dit?

Heeft je scriptje wel execute rechten (dit zie je door

ls -la bestandsnaam.sh

te typen (waarbij je bestandsnaam.sh vervangt door de bestandsnaam van het script). Als het vierde teken geen x (x voor eXecutable) is dan is het bestand niet uitvoerbaar door de gebruiker, wat een mogelijk probleem te zijn. Om het bestand executable te maken (op voorwaarde dat jij het bestand het laatst hebt opgeslagen), typ

chmod u +x

6. Slot
Dit is het einde van mijn minitutorial over cron. Vind je dat er een cruciaal onderdeel ontbreekt aan deze tutorial? Contacteer me op http://www.GoodSoft.be/contact.

 

© 2008 GoodSoft Development. All rights reserved. Disclaimer - English - XML feed