Tareas Linux - Cron PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Configuración y uso de Crond

Instalando cron

yum -y install cronie

Para iniciar el servicio por primera vez cuando recién se ha instalado cronie, sólo ejecute:

service crond start

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

yum -y install cronie-anacron

Anacron se instala como un mandato programado cada hora.


Procedimientos

Formato para el archivo /etc/crontab

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

.-----------------------· Minuto (0 - 59)

| .--------------------· Hora (0 - 23)

| | .-----------------· Día del mes (1 - 31)

| | | .--------------· Mes (1 - 12)

| | | | .-----------· Día de la semana (0 - 6) (domingo=0 o 7), y

| | | | | también acepta como valores:

| | | | | mon, tue, wed, thu, fri, sat y sun

| | | | | .--------· Usuario
| | | | | | .-· Mandato a ejecutar

↓ ↓ ↓ ↓ ↓ ↓ ↓

1 14 * * * fulano /home/fulano/bin/tarea.sh > /dev/null 2>&1

Formato exclusivo de cronie

A diferencia de vixie-cron, con cronie se pueden omitir los primeras 5 campos y en su lugar utilizar las
siguientes opciones:

 @reboot (ejecutar una vez después de reiniciar el sistema)


 @yearly y @annually (ejecutar anualmente, es decir: «0 0 1 1 *»)
 @monthly (ejecutar mensualmente, es decir: «0 0 1 * *»)
 @weekly (ejecutar semanalmente, es decir: «0 0 * * 0»)
 @daily (ejecutar diariamente, es decir: «0 0 * * *»)
 @hourly (ejecutar cada hora, es decir: «0 * * * *»)

Formato para utilizar con el mandato crontab -e

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.

su -l usuario -s /bin/bash -c "crontab -e"

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.

.-----------------------· Minuto (0 - 59)

| .--------------------· Hora (0 - 23)

| | .-----------------· Día del mes (1 - 31)

| | | .--------------· Mes (1 - 12)

| | | | .-----------· Día de la semana (0 - 6) (domingo=0 o 7), y


| | | | | también acepta como valores:

| | | | | mon, tue, wed, thu, fri, sat y sun

| | | | | .--------· Mandato a ejecutar

↓ ↓ ↓ ↓ ↓ ↓

1 14 * * * /home/fulano/bin/tarea.sh > /dev/null 2>&1

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

Considerando el siguiente ejemplo:

1 1 * * * root freshclam > /dev/null 2>&1

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.

Considerando el siguiente ejemplo:

0 23 * * 5 root yum -y update > /dev/null 2>&1

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.

Considerando el siguiente ejemplo:

*/5 * * * * root /sbin/service httpd reload > /dev/null 2>&1

Lo anterior significa que cada 5 minutos se ejecutará, como el usuario root, el mandato /sbin/service httpd
reload.
Considerando el siguiente ejemplo:

* */3 * * * root /sbin/service httpd reload > /dev/null 2>&1

Lo anterior significa que cada 3 horas se ejecutará, como el usuario root, el mandato /sbin/service httpd
reload.

Considerando el siguiente ejemplo:

* * */3 * * root /sbin/service httpd reload > /dev/null 2>&1

Lo anterior significa que cada 3 días se ejecutará, como el usuario root, el mandato /sbin/service httpd
reload.

Considerando el siguiente ejemplo:

30 10 20 2 * fulano wall "¡Feliz cumpleaños a mi!"

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!".

Considerando el siguiente ejemplo:

@reboot fulano mail -s "El sistema ha reiniciado" alguien@gmail.com

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".

También podría gustarte