¿Cómo automatizar tareas con Cron en Linux?. Nuevo manual en Todo-Linux.
Enviado el Thursday, 09 September a las 17:49:32 por Manssson
Nuevo manual que os presentamos en Todo-Linux.com .
Esta vez se trata de: ¿Cómo automatizar tareas en nuestro Linux con cron?
En muchas ocasiones habreis necesitado realizar alguna
tarea de forma automática un día concreto, o al principio de cada mes, o a una
hora determinada y o bien habeis hecho scripts "chapuzas" o lo habeis dejado de
hacer por no saber que existe cron, una potente herramienta que
permite hacer todo esto, en Linux o en Unix.
Pues bien, vamos a explicaros cómo introducir tareas y programarlas en
cron...(sigue)
Digamos que el cron se compone básicamente de dos "partes" el daemon y el
fichero de configuración.
El daemon se llama crond y es el encargado de leer el fichero de
configuración /etc/crontab.
Lo hace cada 60 segundos, en busca de cambios en dicho fichero e incorporar así
tareas al sistema.
Nosotros no vamos a entrar en el deamon, ya que bastará que lo marqueis para que
se ejecute al iniciar vuestro sistema, esto lo podeis hacer con la herramienta
que traiga vuestra distribución sino, siempre podeis recurrir al modo texto
con:chkconfig.
El fichero donde se añaden tareas es,como antes he escrito, /etc/crontab
que podremos editar con nuestro editor favorito, como bien sabeis yo mismo
publiqué un manual sobre la utilización del editor
vi, así que podeis usar ese mismo :).
Bien, una vez editado dicho fichero encontraremos esto: SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
El primer campo, como bien veis, es el entorno donde se ejecutarán las órdenes,
podeis dejarlo así por defecto, a menos que useis otra shell.
El segundo campo está claro, es el valor de la variable PATH, si las ordenes que
ejecutará la tarea no se encuentran en dicho PATH, no teneis más que
añadirlo. El tercero, manda los outputs del cron al root, o a quien
queramos.Si queremos que no se envie nada sólo debemos dejar la variable
así: MAILTO="".
Los /etc/cron.hourly, daily...son fichero que usa cron para su gestión
interna y los lanza cada día.
Bien, ahora queremos agregar una tarea a nuestro sistema, ¿cómo se hace?.
Debemos saber cómo funcionan los campos del /etc/crontab.
El primer campo son los minutos.
El segundo campo son las horas.
El tercer campo es el día.
El cuarto es el día de la semana.
El quinto es la orden a ejecutar.
Es decir, para el crontab el fichero es así: minute hour day month dayofweek command
Hay que destacar que los minutos deben ser enteros de entre 0-59.
Las horas, enteros de 0-23.
Días, 1-31. (Para meses que los tengan, claro.)
Meses, 1-12, también se pueden usar nombres cortos, (en inglés) jan, feb...(lo
desaconsejo, aconsejo usar números).
Días de la semana, se usan enteros 1-7 (al igual que en los meses, se puede usar
el nombre corto, pero tambien lo desaconsejo, en favor de los números.).
Y por último la orden, por ejemplo puede ser: ls -h >
/home/manssson/ls.txt.
Con esto ya deberíamos ser capaces de crear y hacer funcionar cualquier
tarea, pero cron tiene alguna más utilidades que conviene saber.
Por ejemplo, si ponemos un asterisco (*) en algún campo, por ejemplo el mes,
esto hará que se ejecute la orden todos los meses, y luego respetará los demás
valores, tales como el día o la hora.
Si queremos indicar un rango de enteros, lo haremos con un guión (-).
Si queremos indicar enteros separados, se harán con comas (,), por ejemplo:
1, 2, 3.
Podemos concretar o excluir valores usan la barra (/), es decir, si queremos que
una orden se ejecute durante los 0-59 minutos de una hora menos en el minuto 15,
pues lo marcaremos haciendo:0-59/15.
También podemos hacer que una orden que se ejecute en un determinado minuto,
haciendo:*/25. Esto hará que nuestra tarea se ejecute siempre en el
minuto 25.
El uso de la barra (/) y el asterisco (*) puede emplearse en todos los campos.
Si queremos que una tearea no sea ejecutada sólo debemos comentar esa linea al
principio con la "almohadilla" (#): #30 18 8 * * root rm -f
/var/cache/apt/archives/*.rpm.
Con todo esto ya podremos incorporar tareas a nuestro sistema de forma
automática.
Como dije al principio de este documento, solo debemos lanzar el daemon
crond y asegurarnos de que se ejecute siempre que iniciamos el
sistema.