Cron

De franhpWiki

Dreceres ràpides: navegació, cerca

Contingut

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:

  • minut = Minut, de 0 a 59 EX: 14
  • hora= Hora, de 0 a 23 EX: 21
  • dia_mes= Dia del mes, de 1 a 31.
  • mes= Mes, de 1 a 12 o les tres primeres lletres del nom del mes en Anglès
  • dia_setmana= Dia de la setmana, de 0 a 7 (0 i 7 és Diumenge) o les tres primeres lletres del nom del dia de la setmana en Anglès
  • usuari= Nom o UID de l'usuari que executarà la instrucció.
  • instrucció= Instrucció que s'executarà.

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.


Exercici 7.a :

Crea les següents tasques per al dimoni Cron:

a) Esborra recursivament el directori /home/groucho/tmp/ tots els dies de Dilluns a Divendres a les 22:30
Fitxer:cron1.jpg
b) Comprimeix la carpeta /home/groucho/documents i desa el fitxer comprimit en /home/groucho/copia tots els dies de la setmana.
Fitxer:cron2.jpg


Bibliografia

http://doxfer.com/Webmin/ScheduledCommands

Eines de l'usuari