CRON. Planificador de *nix.


El planificador de tareas de Linux es un viejo amigo al que acudo tan de vez en cuando que nunca me acuerdo como configurarlo. Como recientemente me lo he tendido que volver a repasar dejo aquí una chuletilla.

Cron es el nombre del programa del planificador de Linux/Unix que permite ejecutar automáticamente comandos o scripts (grupos de comandos) a una hora o fecha específica. En prácticamente todas las distribuciones de Linux se usa la versión Vixie Cron.

Básicamente consiste en un demonio (crond) que ejecuta cada minuto las ordenes almacenadas en un grupo de ficheros. Este demonio habitualmente se instala en todas las distribuciones y se configura para que se inicie al arranque del sistema. La forma mas habitual de manipular estos ficheros es con el comando crontab.

Estado del CRON.
Para averiguar el estado del demonio lo mas inmediato es mirar los procesos, o eventualmente preguntarselo al servicio.

$ ps -ef | grep -i crond
root XXX XXX XXX XXX XXX XXXX cron
$ service cron status
cron start/runnig, process XXX

Para ver lo que ya se tiene planificado

$ crontab -l
# m h dom mon dow command
0 12 * * * /etc/init.d/tomcat restart

Modificando el fichero de planificación.
Para modificar la planificación es necesario editar un fichero y enviárselo al cron

$ crontab fichero

O editarlo a mano. Es importante saber que el comando que permite realizar esto usará el editor que tengamos definido en las variables $EDITOR o $VISUAL, lo digo por ahorrar sustos.

$ export EDITOR=vi
$ crontab -l

Estructura del fichero de planificación
El fichero de planificación es muy sencillo. Por cada comando/script que se ejecute se tienen que dar 6 parámetros (m h dom mon dow command)

  1. Minuto: Controla el minuto de la hora en que el comando será ejecutado, este valor debe de estar entre 0 y 59.
  2. Hora: Controla la hora en que el comando será ejecutado, se especifica en un formato de 24 horas, los valores deben estar entre 0 y 23, 0 es medianoche.
  3. Día del Mes: Día del mes en que se quiere ejecutar el comando. Por ejemplo se indicaría 20, para ejecutar el comando el día 20 del mes.
  4. Mes: Mes en que el comando se ejecutará, puede ser indicado numéricamente (1-12), o por el nombre del mes en inglés, solo las tres primeras letras.
  5. Día de la semana: Día en la semana en que se ejecutará el comando, puede ser numérico (0-7) o por el nombre del día en inglés, solo las tres primeras letras. (0 y 7 = domingo)
  6. Comando: Comando, script o programa que se desea ejecutar. Este campo puede contener múltiples palabras y espacios.

En los parámetros se indicará el valor o lista de valores (separados por comas) que se desean y si queremos que se ejecute en todo momento dejaremos un “*”. Así si queremos que se ejecute todos los días pondremos un “*” en el día del mes, mes y día de la semana.

Eliminando el fichero de planificación.
Para eliminar la planificación o editamos el fichero de la forma anterior o usamos:

# crontab -r

Notas.

  • El cron se ejecuta con variables de entorno propias. Ojo con las variables definidas en el “.profile”, es bastante habitual que un script planificado falle porque no tiene la misma definición del PATH o LD_LIBRARY_PATH que la shell del usuario.
  • crontab no se lleva muy bien con el comando “su”. 
  • El fichero de planificación debe acabar con un carácter de nueva línea. Si no es así a pesar de que la edición del fichero no nos de problemas su ejecución si lo hará.
  • cron hace mas cositas de las que he comentado aquí. Una descripción bastante mas detallada se encentra aquí.

Compartir
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *