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.
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.