Cron
De franhpWiki
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:30b) Comprimeix la carpeta /home/groucho/documents i desa el fitxer comprimit en /home/groucho/copia tots els dies de la setmana.
![]()


