7.9.2.- Crear tareas cron del sistema

El fichero /etc/crontab controla las tareas cron del sistema, suele comenzar con varias líneas que definen variables de entorno como $PATH y $MAILTO. Sus líneas tienen el siguiente aspecto:

crontab_1Desglosamos:

ejemplo_crontab_1

El orden de los campos son, por orden, los minutos (0-59), las horas (0-23), el día del mes (1-31), el mes (1-12) y el día de la semana (0-7, tanto el cero como el siete corresponde al domingo). Si lo desea, para los valores del mes y el día de la semana pueden utilizar las tres primeras letras del nombre en lugar de un número.

En todos los casos podemos especificar varios valores de distintas maneras:

  • Un asterisco (*) coincide con todos los valores posibles .
  • Una lista separada por comas (0,6,12,18) coincide con cualquiera de los valores especificados.
  • Dos valores separados por un guion (-) indican un rango con los valores de los extremos incluidos (como 9-17) en la hora especifica indica una hora que va desde las 9:00 a.m a las 5:00 p.m.
  • Cuando se utiliza una barra “/” junto a otras opciones de múltiples valores, se están especificando valores escalonados, es decir, la distancia que hay entre los valores indicados. Por ejemplo, un */10 en los minutos indica una tarea que se ejecuta cada diez minutos.

ejemplo_crontab_2

ejemplo_crontab_3

En este ejemplo run-parts /etc/cron.hourly. Las entradas de /etc/crontab suelen utilizar run-parts, cronloop o una utilidad similar que inicie cualquier script ejecutable contenido en un directorio. El ejemplo anterior ejecuta todos los scripts de /etc/cron.daily a las 4:02 AM de cada día. La mayoría de distribuciones incluyen tareas cron del sistema que se ejecutan cada mes, día, semana y hora; tienen sus scripts en el directorio /etc/cron.intervalo, donde intervalo es una palabra asociada con la frecuencia de ejecución. Otras distribuciones utilizan los directorios /etc/cron.d/intervalo.

tux_maestro_derLas horas exactas escogidas para ejecutar las tareas cron del sistema varían de una distribución a otra. No obstante, lo normal es que las tareas diarias y de intervalos inferiores se ejecuten en las primeras horas del día (entre medianoche y las 6:00 a.m.). Consulte su fichero /etc/crontab para determinar cuándo ejecutará su sistema las tareas cron.

Para crear una tarea cron del sistema, crearemos un script para que realice la tarea deseada y lo copiaremos en el directorio /etc/cron.intervalo apropiado. Cuando se vuelva a leer el contenido del directorio, cron ejecutara el script. Debemos comprobar que el script funciona correctamente antes de añadirlo como una tarea cron, especialmente si dicha tarea se ejecuta cuando no estemos cerca.

tux_maestro_derAntes de enviar un script como una tarea cron, pruébelo a fondo. Esto es especialmente importante si la tarea cron se ejecuta cuando no esté cerca. Imagínate el problema que supondría que un error en el script de su tarea llenara el disco duro con ficheros inservibles o generara miles de mensajes de correo cuando está presente para corregir rápidamente el problema.

Si necesitamos ejecutar una tarea cron con un intervalo de tiempo no contemplado en /etc/crontab, podremos modificar este fichero para añadir la hora de ejecución de la tarea cron deseada o bien crear una tarea cron del usuario. Si decidimos modificar la tarea en crontab, lo haremos a partir de una entrada existente, cambiando las horas y el directorio de almacenamiento del script según nuestras necesidades. El propietario de los directorios que almacenan tareas cron del sistema debe ser root, sólo él debe tener permiso para escribir en dichos directorios.

 tux_maestro_derEl propietario de los directorios que almacenen tareas cron del sistema debe ser root y sólo éste debe tener permiso para escribir en dichos directorios. Si los usuarios normales pudieran escribir en uno de estos directorios, los usuarios sin escrúpulos podrían escribir scripts para otorgarse privilegios de superusuario y colocarlos en el directorio cron del sistema. La siguiente vez que cron ejecutara estos scripts, los usuarios tendrían acceso administrativo completo al sistema.

Anuncios