Cron

Cron: Execució de tasques a intervals

Introducció

La majoria d’ordinadors incorporen un rellotge intern que mostra l’hora. Cron és un dimoni que executa diferents processos a determinades hores de determinats dies. Per defecte, el dimoni Cron s’instal·la automàticament quan instal·lem el sistema operatiu.

Conceptes previs

Runparts

L’ordre runparts, executa tots els fitxers executables d’un directori Ex: Per a executar tots els executables del directori /home/groucho:

  $ run-parts /home/groucho

Redireccionament

Per a enviar les dades que escriu un programa, executarem:

  $ ls / >> sortida.txt

El dispositiu /dev/null és el forat negre del sistema. Qualsevol cosa enviada a /dev/null, és engolida pel dispositiu. Per exemple:

  $ mv /home/groucho/dades.txt /dev/null

Exercici 2.2.a: Explica que fa la següent instrucció:

  $ tar cvfz /home/groucho/copia/dades.tgz /home/groucho/dades >> /dev/null

Realitza una copia del directori dades a dades.tgz i envia tota la sortida a /dev/null (forat negre)

Per a redireccionar els missatges d’error, s’utilitza el canal 2:

  $ tar xvfz /home/groucho/copia/dades.tgz 2>/home/groucho/errors.txt

Exercici 2.2.b: Explica que fa cada instrucció:

a) tar cvfz /home/groucho/copia/dades.tgz /home/groucho/dades >> /dev/null 2>/dev/null

Realitza una copia del directori dades a dades.tgz i envia tota la sortida a /dev/null (forat negre), també els errors

b) tar xvfz /home/groucho/copia/dades.tgz >>/home/groucho/correcte.txt 2>/home/groucho/errors.txt

Fa la copia, redirecciona la sortida a correcte.txt i els errors a errors.txt

Elements de configuració

Usuaris

Aquest manual sols explica com configurar el dimoni com a root, perquè la configuració del dimoni com a usuari no té gaire sentit en un entorn client-servidor amb usuaris amb pocs coneixements.

Exercici 3.1.a : Justifica l’anterior afirmació. Els usuaris no utilitzen normalment tasques automatitzades i a més a més, la majoria de coses que aquests requereixen (serveis), no tenen els permisos necessaris per executar-ho.

3.2 Sintaxi dels fitxers de configuració

Els fitxers de configuració de cron tenen la següent sintaxi

  minut hora dia_mes mes dia_setmana usuari instrucció

On:

També es poden especificar llistes (1,5,8) i rangs (3-6) si els valors són numèrics.

El símbol * significa qualsevol valor.

Exemple: Executa com a l’usuari groucho el fitxer /home/groucho/backup.sh a les 22:45 durant el mes de Gener i Abril de dilluns a dimecres

  45 22 * 1,4 1-3 groucho /home/groucho/backup.sh

Exercici 3.2.a: Explica les següents entrades del fitxer de configuració de cron:

a) 0 3 * * Mon root tar cvfz /home/groucho/copia/copia_setmanal.tgz /home/groucho/dades >>/home/groucho/correcte.txt 2>/home/groucho/errors.txt

Cada dia a les 3 de la nit, fa una copia_setmanal.tgz enviant la sortida a correcte.txt i els errors a errors.txt

b) 0 4 1 1,4-9 * correu /home/correu/enviar-butlleti.sh

Cada dia 1 de gener, abril fins a setembre, a les 4 de la nit, el usuari correu executa l’script enviar-bulleti.sh

c)* * * * * root /root/enviar_spam.sh

Sempre, s’executa l’script enviar_spam.sh

d) 30 22 * Jan 6 groucho /home/groucho/night_fever.sh

El dia 6 de gener a les 22:30 groucho executa night_fever.sh

e) 1 0 1 1 * groucho /usr/bin/echo Feliç any nou

El dia 1 de gener a les 12:01 s’executa l’echo

f) 30 2 * 1,6,9 * root shutdown -h +10 Com és que treballes a aquestes hores? El sistema s'apagarà en 10 minuts

Tots els dies de gener, juny, setembre a les 2:30 s’apaga l’ordinador

Exercici 3.2.b: Explica les següents entrades del fitxer de configuració de cron:

  47 6    * * 7   root    run-parts --report /etc/cron.weekly

Diumenge s’executarà a les 6:47 tots els scripts de /etc/cron.weekly i en reportarà els errors

Fitxers de configuració

Els fitxers de configuració de cron són /etc/crontab i els directoris /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.monthly i /etc/cron.weekly.

Si volem que un fitxer s’execute cada setmana, sols caldrà copiar-lo al directori /etc/cron.weekly. Idènticament, si volem que s’execute cada hora, dia o mes, caldrà copiar-lo, respectivament, als directoris /etc/cron.hourly, /etc/cron.daily o /etc/cron.monthly. Per a altres configuracions més complicades, caldrà editar el fitxer /etc/crontab.

Exercici 4.a:

a) Fes que una vegada a la setmana es copien els fitxers de /home/groucho/dades a /home/groucho/copia

0 2 * * 7 groucho tar zxvf /home/groucho/copia_setmanal.tar.gz /home/groucho/dades/

b) Fes que una vegada al mes s’elimine el fitxer /home/groucho/temporals

* * * * 30 root rm -rf /home/groucho/temporals

c) Fes que els dijous a les 2 am tots els mesos de l’any, excepte a les vacances d’agost, es comprimisca amb zip el directori /home/groucho/dades i els subdirectoris corresponents i que els possibles missatges d’error de la compressió es deixen a /home/groucho/errors.txt

  0 2  * 1-7,9-12 4 groucho zip /home/groucho/dades.zip /home/groucho/dades 2> /home/groucho/errors.txt

Parada i arrancada de Cron

El dimoni Cron s’executa automàticament cada vegada que s’engega l’ordinador i cada minut rellegeix els fitxers de configuració. Tot i això, es recomana que quan canviem algun fitxer de configuració, reinicialitzem el dimoni. Cron es pot parar manualment amb l’ordre:

  # /etc/init.d/cron stop

Cron s’inicia manualment amb l’ordre:

  # /etc/init.d/cron start

La següent reinicia el dimoni Cron:

  # /etc/init.d/cron restart

Monitorització

Per veure si el servei Cron s’està funcionant, executarem l’ordre:

  $ ps aux|grep crond

El resultat ha de ser semblant al següent:

  USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
  root      3608  0.0  2.4  1880  720 ?        Ss   18:59   0:00 /usr/sbin/cron
  root      3693  0.0  1.9  1836  584 pts/1    R+   19:06   0:00 grep cron

Gestió de Cron amb Webmin

Per poder gestionar Cron amb una interfície gràfica, instal·leu webmin.

Des de l’adreça https://ip_ordinador:10000 entreu com a root, trieu la pestanya System ->Scheduled Cron Jobs -> Create a new scheduled cron job.

Recordeu de desar el treball amb el botó Create.

Bibliografia

http://doxfer.com/Webmin/ScheduledCommands

last updated on April 11, 2015, 7:47 p.m.
Back