previous.png
Cursus Linux       Advanced       cron   
gnu.png


up.png Processen down.png

In het beheer van processen krijgt de netwerk administrator ook te maken met het plannen van taken in de tijd, ofwel, het geheel van werkstations en servers, het computer netwerk genoemd, automatisch en un-attended taken te laten uitvoeren. Het voorbeeld bij uitstek is het automatisch en op gezette tijden uitvoeren van een backup van de gegevens van de gebruikers.

Wat leren we in dit hoofdstuk ?

up.png 1 Het plannen van processen (schedule=agenda) down.png

Linux biedt ook mogelijkheden om processen in de toekomst uit te laten voeren. Dit gebeurt door gebruik te maken van de functionaliteiten van de daemon cron en de opdracht at. Cron is uitermate geschikt om processen meerdere malen ergens in de toekomst uit te voeren, terwijl at geschikt is om een proces 1 keer in de toekomst uit te voeren.

up.png 2 De daemon cron down.png

  • De daemon 'cron' zorgt ervoor dat processen op gezette tijden worden geactiveerd.
  • Dit gaat op basis van tekst bestanden waarin staat welke processen wanneer moeten worden opgestart.
  • De 'cron' service is op de meeste distributies standaard geïnstalleerd.
  • up.png 2.1 De cron bestanden down.png

    /var/spool/cron/crontabs Hier zoekt cron naar crontab bestanden met een naam zoals de gebruiker namen in /etc/passwd
    Ieder van deze crontab bestanden bevatten opdrachten die door de betreffende gebruiker opgesteld zijn.
    Deze bestanden worden gemanipuleerd door het programma 'crontab' en worden niet rechstreeks geediteerd.
    /etc/cron.d Hier worden crontab bestanden met hetzelfde formaat als /etc/crontab geplaatst door packages (toepassingen) die een fijnere controle nodig hebben dan hourly, daily, weekly, monthly
    /etc/cron.hourly Scripts in deze directory worden 1 keer per uur uitgevoerd
    /etc/cron.daily Scripts in deze directory worden 1 keer per dag uitgevoerd
    /etc/cron.weekly Scripts in deze directory worden 1 keer per week uitgevoerd
    /etc/cron.monthly Scripts in deze directory worden 1 keer per maand uitgevoerd
    /etc/crontab Dit is het root crontab bestand, zeg maar de niet gebruikers gebonden opdrachten
    In dit bestand zal de systeem administrator de geschedulde systeem opdrachten opzetten. Het heeft een klein verschil in syntax t.o.v. de crontab bestanden.

    up.png 2.2 cron gebruiken down.png

    Er zijn 3 manieren om met cron opdrachten te plannen per gegeven periode

    • per uur (hourly)
    • per dag (daily)
    • per week (weekly)
    • per maand (monthly)
    Cron zal de respectievelijke sub directories in /etc scannen, en de uivoerbare bestanden erin uitvoeren
    zie run-parts
    In het /etc/crontab bestand kan de administrator systeem opdrachten plannen Dit bestand wordt door cron in het geheugen ingelezen
    In /var/spool/cron/crontabs kan iedere user een eigen crontab bestand plaatsen Ook deze bestanden worden door cron in het geheugen ingelezen

    up.png 2.3 Het CRONTAB bestand formaat down.png

    CRONTAB is de afkorting van cron table

    crontab.png
    Een voorbeeld van een crontab bestand

    up.png 2.3.1 Het eerste deel van het CRONTAB bestand formaat down.png

    In het eerste gedeelte van een crontab bestand worden environment variabelen voor cron gedefinieerd.

    SHELL De shell waarmee cron de opdrachten zal starten, indien niet gegeven zal cron de shell gebruiken aangegeven in /etc/passwd
    PATH Bevat de directories die gebruikt zullen worden als zoekpad door cron. Indien men een script of een programma heeft in /mytoepas/myprog en men wil dit programma gebruiken in cron dan moet de directory mee opgenomen worden in dit zoekpad.
    MAILTO Wanneer een programma output levert (of errors) dan wordt deze door cron naar de 'MAILTO' gemaild, indien MAILTO niet is gezet wort de output naar de eigenaar van het proces gemaild.
    HOME Is de home directory van cron. Indien niet gegeven dan wordt de home directory de ingave van /etc/passwd

    up.png 2.3.2 Het tweede deel van het CRONTAB bestand formaat down.png

    In het tweede gedeelte van een crontab bestand worden de eigenlijke crontab entries gegeven
    Het formaat ervan is : minute hour dom month dow user cmd
    Voor de tijds velden geldt een '*' als niet ingevuld
    wanneer meerdere velden zijn ingevuld, bv dag v/d week en dag v/d maand, zullen beide waarden aanleiding zijn tot het uitvoeren van de opdracht

    minute Dit veld controleerd in welke minuut van het uur de opdracht zal gestart worden
    de mogelijke waarden zijn 0 tot en met 59.
    hour Dit veld controleert in welk uur van de dag de opdracht zal gestart worden
    de mogelijke waarden zijn 0 tot en met 23 (0 is middernacht)
    dom Dit veld controleert de dag van de maand dat de opdracht gestart zal worden
    Mogelijke waarden zijn 1 tot en met 31 (voor maanden met 31 dagen)
    month Dit veld controleert de maand waarin de opdracht gegeven zal worden
    De mogelijke waarden zijn 0 tot en met 12
    Ook de naam van de maand kan gebruikt worden, gebruik dan de eerste 3 letters (engels), vb may=mei
    dow Dit veld controleert de dag van de week waarin de opdracht gegeven zal worden
    De mogelijke waarden zijn 0 tot en met 7 (0 of 7 is zondag)
    Ook de naam van de dag kan gebruikt worden, gebruik dan de eerste 3 letters (engels), vb sun=zondag
    user Dit veld is de gebruiker die de opdracht draait, alleen in /etc/crontab
    Dit veld bestaat niet in de crontab bestanden in /var/spool/cron/crontabs
    cmd Dit is de opdracht die uitgevoerd zal worden, het veld mag bestaan uit meerdere delen gescheiden door een spatie

    up.png 2.3.3 Voorbeelden down.png

    01 * * * * root opdracht Deze opdracht draait ieder uur om 'uur+1' '-1 minuut'
    17 8 * * * root opdracht Deze opdracht draait dagelijks om 08:17
    17 20 * * * root opdracht Deze opdracht draait dagelijks om 20:17
    00 4 * * 0 root opdracht Deze opdracht draait iedere zondag om 04:00
    * 4 * * Sun root opdracht Deze opdracht draait iedere zondag om 04:00
    42 4 1 * * root opdracht Deze opdracht draait om 04:42 iedere 1'ste van de maand
    01 * 19 07 * root opdracht Deze opdracht draait ieder uur op 19 july
    * 12 16 * Mon root cmd 2 waarden met verschillend effect
    Draait de opdracht 'cmd' op de middag van iedere Maandag en iedere 16'de van de maand
    59 11 * * 1,2,3,4,5 root backup.sh lijsten in een veld zijn komma separated
    Draait backup.sh iedere maandag, dinsdag, woensdag, donderdah, en vrijdag om 11:59
    * 12 10-16/2 * * root backup.sh men kan ook stap waarden gebruiken
    Draait backup.sh de 10'de, 12'de, 14'de, en 16'de van de maand
    */15 9-17 * * * root connection.test nog een voorbeeld van een stap waarde
    draait connection.test iedere 15 minuten tussen 09:00 en 17:00 uur

    up.png 2.4 Crontab voor gewone gebruikers down.png

    Het formaat van een crontab bestand voor een gewone gebruiker is precies hetzelfde als het formaat van het crontab bestand voor de systeem administrator (root), behalve dat het veld user ontbreekt.
    De crontab bestanden voor de linux gebruikers zijn terug te vinden in /var/spool/cron/crontabs (kan verschillen per distributie). De naam van het crontab bestand is ook de naam van de gebruiker. De gewone gebruiker heeft geen rechten om deze bestanden te bekijken.
    Het is niet de bedoeling dat men een gebruikers crontab bestand manueel gaat editeren, inplaats daarvan gebruikt men de opdracht crontab. Alvorens men de opdracht crontab gaat gebruiken kan men de ASCII editor gaan instellen waarmee men het crontab bestand zal editeren. Men gebruikt hiervoor de opdracht export EDITOR="vi" indien men vi zou willen gebruiken. Vervolgens start men crontab en kan men crontab entries gaan ingeven. Bij het verlaten van de editor zal crontab de inhoud van het bestand controleren op syntax errors en wanneer er geen zijn het crontab bestand wegschrijven. Voor meer info over de crontab opties , zie man crontab.

    Met behulp van de bestanden /etc/cron.allow en cron.deny kan men een basis veiligheid instellen voor 'cron'. Gebruikers opgenomen in cron.allow mogen de opdracht crontab gebruiken. Gebruikers opgenomen in cron.deny mogen crontab niet gebruiken. Wanneer geen van beide bestanden aanwezig zijn mogen alle gebruikers crontab gebruiken.

    up.png 2.5 kcron GUI voor crontab down.png

    kcron1.png
    kcron2.png
    kcron3.png

    up.png 2.6 gnome-schedule down.png

    Installeer gnome-schedule met de opdracht:
           sudo apt-get install gnome-schedule

    cron-020601.png

    Je vindt het programma in de menu structuur:
           Toepassingen -> Systeemgereedschap -> Scheduled tasks

    cron-020602.png

    up.png 3 anacron down.png

    Het cron systeem om opdrachten op regelmatige tijdstippen uit te voeren heeft een nadeel, het voert de taken uit exact op de opgegeven tijdstippen. Wanneer de computer op dat moment niet aanstaat wordt de job dus niet uitgevoerd. Met de opdracht anacron kan dit nadeel opgegevangen worden voor jobs met ten hoogste een dagelijkse frequentie.

    Wanneer anacron wordt uitgevoerd leest het een lijst met jobs van een configuratie bestand, normaal /etc/anacrontab. Dit bestand bevat een lijst van jobs door anacron uitgevoerd. Voor iedere job wordt een periode in dagen, een wachttijd in minuten, een unique job nummer en een shell opdracht gegeven.
    Voor iedere job zal anacron nakijken of de job gelopen heeft in de afgelopen 'n' dagen, waar 'n' de gedefinieerde periode voor de job is. Indien niet zal anacron na het aantal minuten wachttijd de job uitvoeren.
    Wanneer de opdracht stopt zal anacron de datum bewaren in een timestamp bestand voor deze job, aan de hand van deze timestamp weet anacron of de opdracht de volgende keer moet gedraaid worden. Alleen de datum wordt hiervoor gebruikt.
    Als alle jobs uitgevoerd zijn wordt anacron verlaten. Dus om een regelmatig verloop te krijgen moet anacron telkens opnieuw gestart worden, meestal wordt dit door 'cron' gedaan.
    Zie ook man anacron.

    up.png 4 De opdracht at down.png

    Door gebruik te maken van de opdracht at kan men een opdracht éénmalig in de toekomst laten uitvoeren.

    up.png 4.1 De opdracht at gebruiken down.png

    Wanneer 'at' wordt aangeroepen start at een prompt waar men dan de opdracht of opdrachten kan ingeven.
    Wil men stoppen met opdrachten, gebruik dan de CTRL-D combinatie (deze genereert de text <EOT>)

    at.png

    Als alternatief kan men de opdrachten op voorhand in een bestand opnemen en via redirection met de at opdracht meegeven. Wanneer de opdracht wordt uitgevoerd wordt output en error meldingen via email naar de gebruiker gestuurd die de at opdracht heeft ingegeven. De opdracht zelf wordt volledig in de achtergrond uitgevoerd.

    up.png 4.2 De at bestanden down.png

    /var/spool/cron/atjobs Hier worden de jobs opgeslagen
    /var/spool/cron/atspool  
    /etc/at.deny Dit bestand bevat een lijst met gebruikers die 'at' niet mogen gebruiken
    /etc/at.allow Dit bestand bevat een lijst met gebruikers die 'at' wel mogen gebruiken
    /usr/share/doc/at/timespec Dit bestand bevat een uitstekende dokumentatie over het formaat van de tijdstippen

    up.png 4.3 De at extra opdrachten down.png

    at de at opdracht zelf
    met at time wordt een opdracht op het gegeven tijdstip time vastgelegd
    atq toont de lijst met vastgelegde opdrachten
    atrm verwijderd een opdracht uit de lijst met vastgelegde opdrachten

    up.png 5 De webmin interface down.png

    Webmin beschikt over een uitermate mooie interface om deze schedule instellingen te doen.

    cron-005.png
    De 'webmin' interface voor de 'cron' daemon (enkel het eerste deel)

    cron-006.png
    De 'webmin' interface voor de 'at' opdracht.

    up.png Samenvatting down.png

    Het plannen van automatische taken ofwel, in computer jargon, het schedulen van processen wordt onder linux gedaan met behulp van de 'cron' daemon en de 'at' opdracht. In deze les hebben we uitvoering de cron daemon en de at opdracht besproken. Bovendien hebben we met behulp van allerlei voorbeelden deze faciliteiten leren gebruiken.

    up.png Literatuur down.png

    remark.png Het named.sh script bevindt zich hier.

    remark.png Het atdns.sh script bevindt zich hier.



    previous.png Gratis Hosting
    Cursus Linux       Advanced       cron   
    Last modified: Thu Feb 12 10:00:27 2015