Taula de continguts

cron / crontab

Conceptos básicos

Cron se ejecuta en el background, revisa cada minuto la tabla de tareas crontab /etc/crontab o en /var/spool/cron

comprobar si está en ejecución:

$ ps -ef | grep crond

Añadir el servicio si no lo estuviera:

$ chkconfig --level 35 crond on

variables de entorno

 $ export EDITOR=nano

Uso sencillo

añadir el script a ejecutar en alguno de estos directorios (o un link):

Uso "elaborado"

modificar /etc/crontab las lineas que realmente ejecutan los «trabajos» son del estilo:

* * * * * <usuario> <comando> [ > /dev/null 2>&1 ]
 ------------- minutos (0 - 59)
 | ----------- horas (0 - 23)
 | | --------- dia del mes (1 - 31)
 | | | ------- mes (1 - 12)
 | | | | ----- dia de la semana (0 - 6) (domingo=0, lunes=1, ... sabado=6)
 | | | | |
 * * * * * comando a ejecutar


* significa todos los valores validos
/ permite definir una repeticion
- permite definir un rango
, permite definir varios valores

otros formatos (special strings):

personalizado

con los siguientes comandos podemos gestionar nuestros propios trabajos CRON (individual para cada usuario):

$ crontab <fichero> : añade el fichero con formato cron
$ crontab -e : edita el fichero
$ crontab -l : lista los trabajos añadidos a nuestros fichero
$ crontab -r : elimina los crontab

No sirve modificar el fichero original, hay que añadirlo cuando toque.

El formato del crontab es ligeramente diferente, no se ha de especificar el usuario.

permite una linea del tipo MAILTO=«direccion@correoelectronico.es»

El fichero se guarda, a buen recaudo, en /var/spool/cron/crontabs (en una debian, al menos)

ejemplos

0 0,6,12,18 * * * /comando
0 0,6,12,18 * * 1-5 /comando
0 0,6,9-15,18 * * 1-5 /comando
0 */6 * * * /comando
*/5 * * * * /comando
0 12 */2 * * /comando

seguridad

se puede controlar quien usa y quien no el servicio CRON en los archivos:

/etc/cron.allow
/etc/cron.deny

en estos ficheros se añade la lista de usuarios con o sin permisos. Se puede utilizar ALL en cualquiera de los 2

Si no se crea el cron.deny y si el cron.allow, es como si hubiesemos creado un cron.deny con un ALL y tendremos que añadir a todos los usuarios que tengan que utilizar este servicio en el cron.allow

más info