meta data de esta página
  •  

¡Esta es una revisión vieja del documento!


Cron

El cron es un servicio usado para ejecutar órdenes a intervalos de tiempo. Las tareas se pueden programar por cada usuario o para el sistema.

El demonio cron se inicia o se detiene como cualquier otro servicio del sistema de la distribución correspondiente, por ejemplo:

/etc/rc.d/initd/crond start|stop|restart

aunque lo habitual es que se lance automáticamente al arrancar el sistema operativo.

Para comprobar si está funcionando
# /etc/rc.d/init.d/crond status

o si tienes el comando service instalado:

# service crond status

crond (pid 507) is running…

se puede también revisar a través del comando ps:

# ps -ef   |  grep crond

Si el servicio no estuviera configurado para arrancar desde un principio, bastaría con agregarlo con el comando chkconfig:

# chkconfig --level 35 crond on

Por usuario

Por usuario, usamos el comando crontab, el cual tiene las siguientes opciones:

  • -e edita la tabla del cron
  • -l lista las entradas
  • -u usuario usa la tabla de otro usuario, en lugar del actual (sólo vale para root)
  • -r borra la tabla entera

El formato de este fichero es el siguiente: minutos horas dia mes diadelasemana comando

  • minutos→entre 0 y 59
  • horas→Entre 0 y 23
  • día→Entre 1 y 31
  • mes→Entre 1 y 12
  • día semana→Entre 0 y 6. 0 es Domingo, 1 Lunes, … 6 Sábado
  • El comando o comandos a ejecutar. Si no está en el PATH hay que especificar toda su ruta

Por el Sistema

Para editar el del sistema, metemos las tareas en /etc/cron.d. Si se cambia estos ficheros hay que reiniciar el cron.

Cada tarea se añade indicando 5 campos que indican el período de ejecución, en las del sistema (/etc/cron.d), un campo más para el usuario con el que se ejecutará

Los 5 campos que indican el período son

  • minutos
  • horas
  • día del mes
  • mes
  • día de la semana

Los posibles valores que puede tomar

  • Un asterisco (*) indican todos los valores
  • Una lista de números separados por comas
  • Un rango, declarado como dos números separados por un guión
  • Cada cierto tiempo, con una barra (valor/incremento)

Ejemplos:

Una vez cada hora0 * * * *
Cada 20 minutos0,20,40 * * * *
Otra cada 20 minutos*/3 * * * *
Una vez al día, a las 05:00 am05 00 * * *
Los domingos a las 12:0000 12 * * 7
El primero de cada mes00 20 1 * *
lanzar script todos los días a las 70 7 * * * /path/script.sh
lanzar script cada primer día del mes a las 70 7 1 * * /path/script.sh
lanzar script cada Viernes a las 17:30 30 17 * * 5 /path/script.sh
Si ponemos un * se ejecutarán una vez por hora en el caso de las horas, y una vez por minuto en el caso de los minutos
Hay que tener cuidado con los mensajes que envía el cron en caso de tener deshabilitado el sendmail. Para evitar que los mensajes se queden en /var/spool/clientmqueue hay que ejecutar
 crontab -e 

y añadir al final de la línea de cada trabajo una de las siguientes opciones:

  • >/dev/null 2>&1
  • &> /dev/null

Despues reinicial el servicio cron

/etc/init.d/crond restart

Otra opción es editar el fichero crontab

nano /etc/crontab

y modificar o añadir al principio la línea

MAILTO=""

GUIS para cron

Editores gráficos de cron, como son:

Referencias