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.
# /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 hora | 0 * * * * |
Cada 20 minutos | 0,20,40 * * * * |
Otra cada 20 minutos | */3 * * * * |
Una vez al día, a las 05:00 am | 05 00 * * * |
Los domingos a las 12:00 | 00 12 * * 7 |
El primero de cada mes | 00 20 1 * * |
lanzar script todos los días a las 7 | 0 7 * * * /path/script.sh |
lanzar script cada primer día del mes a las 7 | 0 7 1 * * /path/script.sh |
lanzar script cada Viernes a las 17:30 | 30 17 * * 5 /path/script.sh |
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:
- GNOME Crontab Editor. Proyecto en fase alpha, pero ya genera archivos de cron funcionales. Lo encuentran en http://jodrell.net/projects/gnome-crontab.