Tareas Linux - Cron PDF
Tareas Linux - Cron PDF
Tareas Linux - Cron PDF
Instalando cron
Para iniciar el servicio por primera vez cuando recién se ha instalado cronie, sólo ejecute:
Anacron
Para los sistemas donde es imposible que el servicio crond se ejecute las 24 horas, los 365 días del año,
como ocurre en los equipos portátiles y sistemas de escritorio, conviene instalar además el paquete cronie-
anacron, el cual se encarga de ejecutar los mandatos programados pendientes que haya sido imposible
procesar con el servicio crond, al estar éstos configurados en horarios en los cuales esté apagado o
suspendido el sistema.
Cabe señalar que anacron depende de cronie o vixie-cron, según corresponda la versión del sistema
operativo.
Instalación
Cualquier usuario que sea definido para ejecutar un mandato programado en el archivo /etc/crontab, podrá
ejecutar todo aquello para lo cual tenga privilegios, siempre y cuando se defina un intérprete de mandatos
válido (por ejemplo /bin/bash o /bin/sh) en la variable de entorno SHELL, así como las rutas de binarios
ejecutables que sean necesarias, sin importar lo que esté definido en el archivo /etc/passwd o las variables
de entorno definidas en el archivo ~/.bashrc del usuario a utilizar.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
El archivo /etc/crontab permite además definir a cuál usuario enviar un mensaje de correo electrónico con
los resultados de las salidas de los mandatos que las generen y el intérprete de mandatos a utilizar.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=alguien@gmail.com
El archivo utiliza un formato de 7 campos, donde se define, respectivamente, minuto, hora, día del mes,
mes, día de la semana, usuario a utilizar y el mandato a ejecutar
| | | | | .--------· Usuario
| | | | | | .-· Mandato a ejecutar
↓ ↓ ↓ ↓ ↓ ↓ ↓
A diferencia de vixie-cron, con cronie se pueden omitir los primeras 5 campos y en su lugar utilizar las
siguientes opciones:
Todos los usuarios del sistema pueden ejecutar el mandato crontab con la opción -e, a excepción de
aquellos quienes tengan /dev/null (dispositivo nulo) como intérprete de mandatos o bien que se
encuentren listados en el archivo /etc/cron.deny.
Para los usuarios que tengan /sbin/nologin como intérprete de mandatos, será necesario se defina
/bin/bash o /bin/sh en la variable de entorno SHELL al inicio del archivo cron correspondiente. Con este
tipo de usuarios, habría que ejecutar lo siguiente para poder hacer uso del mandato crontab.
El formato para los usuarios, utilizando el mandato crontab con la opción -e, es el mismo que el del archivo
/etc/crontab, pero descartando la columna que define al usuario.
↓ ↓ ↓ ↓ ↓ ↓
Todos los archivos de cron generados por los usuarios se almacenan siempre dentro del directorio
/var/spool/cron, utilizando el mismo nombre del usuario como nombre de archivo. Es decir, los mandatos
programados por el usuario fulano, se almacenarán en el archivo /var/spool/cron/fulano.
Ejemplos de configuraciones
Lo anterior significa que a las 01:01, todos los días, todos los meses, todos los años, todos los días de la
semana, se ejecutará, como el usuario root, el mandato freshclam. Se añade al final «> /dev/null 2>&1»
para que cualquier dato generado por la ejecución de este mandato, se descarte y sea enviando al
dispositivo nulo del sistema (/dev/null) y que también se envíe la salida de STDERR hacia STDOUT.
Lo anterior significa que a las 23:00, todos los viernes, todos los meses, todos años, se ejecutará, como el
usuario root, el mandato yum -y update. Al igual que en el ejemplo anterior, se añade al final «> /dev/null
2>&1» para que cualquier dato generado por la ejecución de este mandato, se descarte y sea enviando al
dispositivo nulo del sistema (/dev/null) y que también cambie el direccionamiento de STDERR hacia
STDOUT.
Lo anterior significa que cada 5 minutos se ejecutará, como el usuario root, el mandato /sbin/service httpd
reload.
Considerando el siguiente ejemplo:
Lo anterior significa que cada 3 horas se ejecutará, como el usuario root, el mandato /sbin/service httpd
reload.
Lo anterior significa que cada 3 días se ejecutará, como el usuario root, el mandato /sbin/service httpd
reload.
Lo anterior significa que a las 10:30, cada 20 de febrero, todos lo años, se ejecutará, como el usuario fulano,
el mandato wall "¡Feliz cumpleaños a mi!".
Lo anterior significa que cada vez que se reinicie el sistema, se ejecutará, como el usuario fulano, el
mandato mail -s "El sistema ha reiniciado", mismo que enviará con mensaje de correo electrónico a
alguien@gmail.com, con el asunto "El sistema ha reiniciado".