cron es un demonio que nos permite programar tareas con el fin de que se realicen automáticamente.
El principal fichero de configuración de cron es /etc/crontab:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
En él se define básicamente cuándo se ejecutarán y en qué directorio hay que colocar scripts para que se ejecuten cada hora (/etc/cron.hourly), diariamente (/etc/cron.daily/), semanalmente (/etc/cron.weekly) o mensualmente (/etc/cron.monthly).
De este modo, si queremos que un script se ejecute cada día, lo colocaremos en el directorio /etc/cron.daily.
Si queremos recibir un e-mail cuando se produzca un error durante la ejecución de las tareas o cuando nuestro script genere cualquier salida, podemos indicar una dirección de correo en el fichero crontab:
MAILTO=usuario@gmail.com
Para dejar de recibir emails, podemos quitar la dirección de correo en el fichero crontab:
MAILTO=""
Para definir una tarea en un fichero de cron, hay que indicar los siguientes campos:
- m: minuto en el que se va a ejecutar la tarea (0-59).
- h: hora (0-23).
- dom: día del mes (1-31).
- mon: número de mes (1-12).
- dow: día de la semana (0-7) 0-> domingo, 1-> lunes ... 7->domingo.
- user: usuario al que pertenece la tarea.
- command: comando que vamos a ejecutar.
Cada usuario puede tener sus propias tareas.
Si un usuario quiere ver las tareas que tiene programadas, tan sólo tiene que ejecutar:
$ crontab -l
Si el usuario quisiera editar su lista de tareas, podría ejecutar:
$ crontab -e
Y si quisiera borrar su lista de tareas:
$ crontab -r
Por defecto, todos los usuarios tienen permiso para usar su propio crontab, aunque sólo root puede editar el crontab de cualquier usuario. Ejemplo:
# crontab -u pepe -e
Se puede permitir usar cron a usuarios concretos, añadiéndolos al fichero /etc/cron.allow
También se puede denegar el uso de cron a determinados usuarios, añadiéndolos al fichero /etc/cron.deny
Cuando un usuario crea sus propias tareas programadas, éstas se almacenan en el directorio /var/spool/cron/crontabs dentro de un fichero que tiene como nombre su login.
Ejemplos de tareas:
Ejecutar el comando "comando" del usuario "usuario" cada día a las 23:00
0 23 * * * usuario comando
Ejecutar el comando del usuario cada 5 minutos:
*/5 * * * * usuario comando
Ejecutar el comando del usuario cada 15 minutos cada domingo:
*/15 * * * 7 usuario comando
Ejecutar el comando del usuario los días 15, 20 y 25 de cada mes a las 12:00
0 12 15,20,25 * * usuario comando
Ejecutar el comando del usuario los días 15,16,17,18,19 y 20 de cada mes a las 12:00
0 12 15-20 * * usuario comando
Ejecutar el comando del usuario cada 12 horas
0 */12 * * * usuario comando
Ejecutar el comando del usuario el primer Sábado de cada mes:
0 0 1-7 * Sat usuario comando
Ejecutar el comando del usuario cada hora todos los domingos de enero
0 * * Jan Sun usuario comando
0 comentarios:
Publicar un comentario