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):

/etc/crontab

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):

crontab (por usuario)

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

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