Cron: taken plannen

by zwijse on Monday, February 18 2008 @ 12:13 AM CET
tutorials: linuxCron is een programma op linux dat op voorbepaalde tijdstippen commando's of scripts kan uitvoeren. Een takenplanner dus. Cron is afgeleid van het latijnse chronos (tijd). Het wordt vooral gebruikt om automatisch backups te nemen of logs door te mailen. Cron is een enorm krachtige en veelzijdige tool voor het plannen van terugkerende taken.
Een 'must' voor linux systeembeheerders, maar ook handig voor de gemiddelde linux gebruiker.

Het is standaard geïnstalleerd op alle linux distributies en kan dus zonder configuratie of installatie gebruikt worden. Alle taken of 'cronjobs' worden opgeslagen een bestand met jouw gebruikersnaam als naam in de directory /var/spool/cron/

Cronjobs aanmaken gebeurt met de command-line maar is redelijk eenvoudig. Het is ook mogelijk om het bestand met een tekst-editor aan te passen maar het wordt aangeraden taken te plannen via het crontab commando.

Cron basis:

Een crontab entry bestaat uit verschillende velden, gescheiden door een spatie,  die aanduiden wanneer welk script of commando uitgevoerd moet worden.

voorbeeld crontab entry:
30 0 * * * ~/backup

In de volgende tabel staat uitgelegd waarvoor elk veld dient:
30 0 * * * ~/backup
minuut uur dag maand dag van de week commando of pad naar script


De cronjob in het voorbeeld start elke nacht om half 1 het script backup in de homedir van de gebruiker die de cronjob heeft aangemaakt.
Een * geeft aan dat met dit veld geen rekening moet worden gehouden. In het voorbeeld wil dit zeggen dat het niet uitmaakt welke dag, maand of dag van de week het is, het script kijkt enkel na of het 30 na 0 is.

mogelijke waarden:
minuut: 0-59
uur: 0-23
dag: 1-31
maand: 1-12 (1 voor januari, 2 voor februari, enzovoort)
dag van de week: 0-7 ( 0 en 7 kunnen beide gebruikt worden voor zondag, 1 voor maandag, 2 voor dinsdag, enzovoort)


Als je weet hoe je cronjob er moet uitzien kan je hem aanmaken met het commando:
crontab -e

Voeg je job toe op een nieuwe lijn en sluit het bestand. Je taak wordt nu uitgevoerd op de door jouw bepaalde tijdstippen.

crontab -l
geeft een lijst weer met alle ingevoerde cronjobs zonder een editor te openen

ingewikkelde cron taken

backups met cron:

Een goede manier om backups te nemen van meerdere bestanden is ze te comprimeren met tar
tar -cvf - . | tar -C /share/myhome/myimportantfiles/ -xv

Om dit in een cronjob te gieten die bvb. elke nacht om 3u moet draaien gebruik je:
0 3 * * * cd /home/myhome/myimportantfiles;tar -cvf - * | tar -C /share/myhome/myimportantfiles/ -xv

";" is het teken om verschillende commando's na elkaar uit te voeren
"|" (Alt gr + 1) is het teken om commando's te 'pipen' ( uitvoer van het eerste commando wordt gebruikt als invoer voor het tweede)


mailen met cron:
Om de uitvoer van een commando naar je mailadres te sturen gebruik je een 'pipe' die de uitvoer doorstuurt naar het commando mail.
15 * * * * smbstatus | mail -s "Cron: Status van samba" test@gmail.com

Deze cronjob stuurt om kwart na elk uur een mail naar test@gmail.com met als onderwerp "cron: status van samba" en als inhoud de uitvoer van het commando smbstatus. smbstatus geeft een lijst weer van alle machines & gebruikers die verbonden zijn met samba.

om de inhoud van een logbestand te mailen:
15 * * * * mail -s "logs" test@gmail.com < /var/log/messages

Deze cronjob mailt het bestand /var/log/messages naar test@gmail.com


Ingewikkelde tijdstippen

Voor sommige taken heb je een ingewikkelde planning, daarvoor heb je met cron verschillende mogelijkheden:



voorbeelden:

  • 12,42 * * * * commando
    Dit commando zal twee maal per uur worden uitgevoerd, op de 12e en 42e minuut.

  • 0,30 * 1-15 * * commando
    Dit commando wordt elk half uur uitgevoerd, maar enkel  van de 1ste tot de 15de dag v/d maand

  • */15 */2 * * * commando
    Dit commando zal worden uitgevoerd op 0:00, 0:15, 0:30, 0:45, 2:00, 2:15, 2:30, ...

  • Trackback

    Trackback URL for this entry: http://downsideup.be/savemejebus/trackback.php/cron-taken-plannen

    No trackback comments for this entry.
    Cron: taken plannen | 7 comments | Create New Account
    The following comments are owned by whomever posted them. This site is not responsible for what they say.
    Cron: taken plannen
    Authored by: Anonymous on Tuesday, May 24 2011 @ 06:40 AM CEST
    You’re a real deep thinker. Thanks for shranig.
    zWYXpdvscyInOcK
    Authored by: Anonymous on Friday, February 24 2012 @ 03:00 AM CET
    BIl6a2 qsmnxstyszdy, [url=http://dtdcwkewxpbb.com/]dtdcwkewxpbb[/url], [link=http://qaeziimbgfgh.com/]qaeziimbgfgh[/link], http://sicqdiqxckiv.com/
    msBSMyKCOHpVJoc
    Authored by: Anonymous on Friday, February 24 2012 @ 03:56 AM CET
    EUdhW0 czgdyvwxhdan, [url=http://gkkskyofjurr.com/]gkkskyofjurr[/url], [link=http://yealyyvdfyae.com/]yealyyvdfyae[/link], http://bnhkoakicsvk.com/
    nXeSpFYnZswjde
    Authored by: Anonymous on Friday, March 23 2012 @ 02:40 PM CET
    GNiunPQbxLfJ
    Authored by: Anonymous on Monday, May 07 2012 @ 05:13 PM CEST
    tYwNCQ evlplnbvdojz, [url=http://smejmltwvpyz.com/]smejmltwvpyz[/url], [link=http://vufsvpywagna.com/]vufsvpywagna[/link], http://fcmrasdzavbe.com/
    Cron: taken plannen
    Authored by: Anonymous on Wednesday, May 25 2011 @ 04:19 PM CEST
    Thanks for the insight. It bingrs light into the dark!
    hYslFQUriwOpw
    Authored by: Anonymous on Thursday, February 23 2012 @ 03:39 AM CET
    tm9cn8 sqaxnmiuofac, [url=http://umggetopkrsa.com/]umggetopkrsa[/url], [link=http://vewgmbmbikxj.com/]vewgmbmbikxj[/link], http://vamdyhjgxojp.com/