Índice del artículo

La utilería cron en los sistemas operativos tipo Unix es una herramienta que nos permite programar tareas o ejecuciones de procesos ya sea por semana, por día por mes o por horas o hasta por minutos.

Para tener una mayor número de herramientas para programar tareas es recomendable conocer los comandos básicos de Unix , el uso del editor VI y la programación en shell de Unix .

Permisos para usar y editar los crontabs

Antes de iniciar con las sintaxis y comandos cron de Unix, es necesario hacer una rápida revisión al sistema de restricciones para los usuarios. Para que un usuario pueda ejecutar la instrucción crontab, lo primero que se tiene que hacer es revisar y en su caso otorgar permisos de modificar su archivo crontab.

La configuración de los permisos a los usuarios se realiza con dos archivos cron.allow y cron.deny y con base en ellos podemos tener diferentes configuraciones:

Para que un usuario pueda utilizar el comando crontab debe aparecer su nombre en el archivo cron.allow. Si el archivo cron.allow no existiera el usuario podrá acceder si su nombre NO existe en el archivo cron.deny.

Si sólo existe el archivo cron.deny pero está en blanco, todos los usuarios podrán hacer uso del crontab.

Si no existiese ninguno de los dos archivos, solo el usuario root podrá hacer uso de los comandos para programar el cron

Para la sintaxis de los archivos cron.allow y cron.deny es únicamente necesario escribir un nombre de usuario por línea.

Sintaxis crontab

La sintaxis crontab es la siguiente:

$ crontab  [-e | -l | -r ] [usuario]

Le parámetro -e indica la edición del cron, -l ver las tareas programadas en el archivo cron y -r remover (borrar) un archivo cron. Si no se especifica el usuario, el comando se ejecutará para el usuario en sesión

Editar los crontabs

Una vez que ya tienes permisos de usuario para ejecutar crontab vamos a comenzar a editar el archivo crontab con la instrucción:

$ crontab -e
0

Con este comando se abrirá el editor de texto predeterminado, si prefieres utilizar vi como editor de texto predeterminado basta con definir la variable de ambiente EDITOR=vi. Para salir del modo edición basta con escribir q[Enter].

En la configuración del crontab le definiremos la frecuencia con que queremos que se ejecute un proceso y la ubicación del shell que vamos a programar con la siguiente sintaxis que especifica el intervalo de repetición de la tarea:

*  *  *  *  * comando o programa a ejecutar
|  |  |  |  |
|  |  |  |  |----- día de la semana (0 - 6) (0-> Domingo)
|  |  |  |------- Mes (1 - 12)
|  |  |--------- Día del mes (1 - 31)
|  |----------- Hora (0 - 23)
|------------- Minuto (0 - 59)

La tarea se ejecutará de acuerdo a estos parámetros, por ejemplo si quisieras ejecutar el programa /export/home/respaldo.sh todos los días viernes a las 3 de la mañana la sintaxis sería la siguiente:

0   3   *   *   4  /export/home/respaldo

Para especificar más de un valor en un registro se puede utilizar la coma (,) para separar los valores; en el ejemplo anterior puedes definir que la tarea se repita los lunes y los viernes a las 3 de la mañana de la siguiente manera:

0   3   *   *   1,4  /export/home/respaldo

Ejemplos de repetición

30   10   *   *   *  Todos los días a las 10:30 hrs.
0   0   1,10,20 * *  Los días 1, 10 y 20 de cada mes a la media noche.
0,30   *   *   *   1  Cada 30 minutos los días lunes, (00:00hrs., 00:30hrs., 01:00hrs. …).
0   22 *   1,2,3,4,5,6,7   *   5  El primer viernes de cada mes a las 10 de la noche.

También puedes programar una tarea para ejecute todos los archivos de una carpeta, por ejemplo:

0   3   *   *   1,4  /export/home/actualizareportes/*