Sunteți pe pagina 1din 9

Gestión de tareas automáticas en Linux

Resumen

En Linux, las tareas pueden configurarse para que se ejecuten de forma


automática en un perı́odo de tiempo concreto y en las fechas indicadas. El
sistema Linux se distribuye preconfigurado para ejecutar determinadas ta-
reas del sistema de modo que el sistema se mantenga actualizado. Por ejem-
plo, la base de datos slocate se actualiza diariamente. Un administrador del
sistema puede utilizar las tareas automáticas para realizar copias de seguri-
dad periódicas, controlar el sistema y ejecutar scripts personalizados, entre
otras tareas.
Linux contiene cuatro utilidades de tareas automáticas: cron, anacron, at
y batch.

1. Cron
Cron es un demonio que sirve para ejecutar tareas programadas según una
combinación de la hora, dı́a del mes, mes, dı́a de la semana y semana.
Cron asume que el sistema está activo de forma continua. Si el sistema no
está activo cuando está programada una tarea, Cron no se ejecuta. Para configurar
las tareas en función de los perı́odos, en vez de según horas exactas, consulte la
Sección 2. Para programar las tareas contemporáneas, remı́tase a la Sección 3.

1.1. Configuración de una tarea Cron


El fichero de configuración principal de cron, /etc/crontab, contiene las
lı́neas siguientes:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
\verb+MAILTO=root+ HOME=/

1
# run-parts
01 * * * * root run-parts \verb+/etc/cron.hourly+
02 4 * * * root run-parts \verb+/etc/cron.daily+
22 4 * * 0 root run-parts \verb+/etc/cron.weekly+
42 4 1 * * root run-parts \verb+/etc/cron.monthly+

Las primeras cuatro lı́neas son variables que se usan para configurar el entor-
no en el que se ejecutan las tareas cron. El valor de la variable SHELL indica al
sistema el entorno de shell que deberá utilizarse (en este ejemplo, el shell de bash)
y la variable PATH define la ruta usada para ejecutar los comandos. El resultado
de las tareas cron se envı́a por correo electrónico al nombre de usuario defini-
do con la variable MAILTO. Si la variable MAILTO se define como una cadena
vacı́a (MAILTO=""), no se enviará correo electrónico. La variable HOME puede
utilizarse para establecer el directorio principal que deberá usarse al ejecutar los
comandos o scripts.
Cada lı́nea del fichero /etc/crontab tiene el formato siguiente:
minute hour day month dayofweek command

minute – número entero entre 0 y 59


hour – número entero entre 0 y 23
day – número entero entre 1 y 31 (debe ser un dı́a válido si se especifica un
mes)
month – número entero entre 1 y 12 (o nombre corto del mes, por ejemplo,
ene, feb, etc.)
dayofweek – número entero entre 0 y 7, donde 0 o 7 corresponde a Domingo
(o el nombre corto del dı́a de la semana, por ejemplo, dom, lun, etc.)
command – el comando a ejecutar (el comando puede ser uno tal como
ls /proc >> /tmp/proc o el comando para ejecutar un script perso-
nalizado que usted haya escrito.)

En cualquiera de los valores antes indicados, se puede utilizar un asterisco (*)


para especificar todos los valores válidos. Por ejemplo, un asterisco para el valor
de mes significa que el comando se ejecutará cada mes dentro de las limitaciones
del resto de los valores.
Un guión (-) entre los números enteros indica un intervalo de números enteros.
Por ejemplo, 1-4 significa los números enteros 1, 2, 3 y 4.

2
Una lista de valores separados por comas (,) especifica una lista. Por ejemplo,
3, 4, 6, 8 indica esos cuatro números enteros.
La barra (/) puede utilizarse para especificar valores de pasos. El valor de un
número entero se puede omitir dentro de un intervalo si se indica a continuación
del intervalo lo siguiente /<número entero>. Por ejemplo, 0-59/2 puede usarse
para definir el resto de los minutos del campo minuto. Los valores de pasos tam-
bién pueden utilizarse con un asterisco. Por ejemplo, el valor */3 puede usarse en
el campo de mes para omitir el tercer mes.
Las lı́neas que empiezan por almohadilla (#) son comentarios y no se procesan.
Como podrá observar en el archivo /etc/crontab, usa el script run-parts
para ejecutar los scripts en los directorios /etc/cron.hourly, /etc/cron.daily,
/etc/cron.weekly, y /etc/cron.monthly cada hora, diaria, semanal o
mensual, respectivamente. Los ficheros de estos directorios deben ser scripts de
shell.
Si las tareas cron deben ejecutarse según una programación distinta a la hora,
dı́a, semana o mes, esto puede agregarse en el directorio /etc/cron.d. Todos
los ficheros de este directorio utilizan la misma sintaxis que /etc/crontab.

# record the memory usage of the system every monday


# at 3:30\verb+AM+ in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh

Los usuarios no root pueden configurar las tareas cron tasks con la uti-
lidad crontab. Todos los crontabs definidos por el usuario se almacenan en el
directorio /var/spool/cron y se ejecutan utilizando los nombres de los usua-
rios que los han creado. Para crear un crontab como un usuario, inicie la sesión
como ese usuario y escriba el comando crontab -e para modificar el cron-
tab del usuario con el editor especificado por la variable de entorno VISUAL o
EDITOR. El fichero usa el mismo formato que /etc/crontab. Cuando se
guardan los cambios en crontab, el crontab se almacena según el nombre de usua-
rio, y se escribe en el fichero /var/spool/cron/username.
El demonio cron controla el fichero /etc/crontab, el directorio \etc/cron.d/
y el directorio /var/spool/cron cada minuto para cada cambio. Si se encuen-
tra algún cambio, estos se descargan en la memoria. De este modo, el demonio no
necesita ser reiniciado si se cambia un fichero crontab.

3
1.2. Control de acceso a Cron
Los ficheros /etc/cron.allow y /etc/cron.deny se usan para res-
tringir el acceso a cron. El formato de los dos ficheros de acceso es un nombre de
usuario en cada lı́nea. No está permitido espacio en blanco en ninguno de los fi-
cheros. El demonio cron (crond) no deberá ser reiniciado si los ficheros de control
de acceso se modifican. Los ficheros de control de acceso se leen cada vez que el
usuario intenta añadir o borrar una tarea cron.
El usuario root puede utilizar siempre cron, sin prestar atención a los nombres
de usuarios listados en los ficheros de control de acceso.
Si existe el fichero cron.allow, tan sólo se permitirá a los usuarios presentes en
la lista utilizar cron y el fichero cron.deny se ignorará.
Si cron.allow no existe, todos los usuarios listados en cron.deny no se les per-
mite usar cron.

1.3. Iniciar y finalizar el servicio


Para iniciar el servicio cron, use el comando /sbin/service crond start. Para
parar el servicio, use el comando /sbin/service crond stop. Se le recomienda que
inicie el servicio en el tiempo de arranque. Remı́tase al Capı́tulo 14 para más de-
talles sobre cómo iniciar el servicio cron automáticamente al arrancar el sistema.

2. Anacron
Anacron es un programador de tareas similar a cron, con la diferencia de que
no necesita que el sistema esté en ejecución. Se puede utilizar para ejecutar los
procesos que cron ejecuta normalmente de forma diaria, semanal y mensual.
Para usar el servicio Anacron, debe tener instalado el paquete RPM anacron.
Para determinar si está instalado este paquete, utilice el comando rpm -q ana-
cron. Si quiere comprobar que el servicio está en ejecución, utilice el comando
/sbin/service anacron status.

2.1. Configuración de las tareas de Anacron


Las tareas Anacron están incluidas en el fichero de configuración /etc/anacrontab.
Cada lı́nea del fichero de configuración corresponde a una tarea y tiene el formato
siguiente:

4
period delay job-identifier command

period – frecuencia (en dı́as) con la que se ejecuta el comando


delay – tiempo de retraso en minutos
job-identifier – descripción de las tareas, usados en los mensajes Anacron y
como el nombre del identificador de la estampilla del proceso, puede con-
tener cualquier caracter no en blanco (excepto barras oblicuas)
command – comando que debe ejecutarse

Por cada tarea, Anacron determina si la tarea ha sido ejecutada dentro del
perı́odo especificado en el campo period del archivo de configuración. Si no se ha
ejecutado dentro de ese perı́odo, Anacron ejecutará el comando especificado en
el campo command después de esperar la cantidad de tiempo especificado en el
campo delay.
Una vez finalizada la tarea, Anacron registra la fecha en el fichero de marca de
fecha que se encuentra en el directorio /var/spool/anacron. Sólo se utiliza
la fecha (no la hora), y se usa el valor de job- identifier como nombre de fichero
del fichero de marca de hora.
Las variables de entorno, como SHELL y PATH , pueden definirse en la parte
superior de /etc/anacron, de forma similar al fichero de configuración de
cron.
El aspecto del fichero de configuración por defecto es similar a como se indica
a continuación:

# \verb+/etc/anacrontab:+ configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# These entries are useful for a Linux system.


1 5 cron.daily run-parts \verb+/etc/cron.daily+
7 10 cron.weekly run-parts \verb+/etc/cron.weekly+
30 15 cron.monthly run-parts \verb+/etc/cron.monthly+

Tal como puede ver en la Figura 28-1, anacron para Linux se configura de
modo que queda garantizada la ejecución diaria, semanal y mensual de las tareas
cron.

5
2.2. Iniciar y finalizar el servicio

Para arrancar el servicio anacron, use el comando /sbin/service anacron start.


Para detener el servicio, use el comando /sbin/service anacron stop. Se recomienda
arrancar el servicio en el momento del arranque. Remı́tase al Capı́tulo 14 para más
detalles sobre el inicio del servicio anacron de manera automática al momento de
arranque.

3. At y Batch
Mientras que cron y anacron se usan para programar tareas, el comando at se
usa para programar una única tarea en un tiempo especı́fico. El comando batch se
usa para programar que se ejecute una sóla tarea cuando los sistemas cargan las
caı́das promedio por debajo de 0.8.
Para poder usar at or batch debe tener el paquete RPM at instalado y el sistema
atd en funcionamiento. Para determinar si el servicio se está ejecutando, utilice el
comando /sbin/service atd status.

3.1. Configuración de tareas

Para programar una tarea no repetitiva en un tiempo especı́fico, escriba el co-


mando at time, en el que time es el tiempo para ejecutar el comando.
El argumento time puede ser uno de los siguientes:

formato HH:MM – Por ejemplo,04:00 especifica 4:00AM. Si se inserta el


tiempo, se ejecuta en el tiempo especı́fico el dı́a después.

midnight – Especifica 12:00AM.

noon – Especifica 12:00PM.

teatime – Especifica 4:00PM.

formato del nombre-mes, dı́a y año – Por ejemplo, Enero 15 del año 2002.
El año es opcional.

formato MMDDYY, MM/DD/YY, o MM.DD.YY – Por ejemplo, 011502 para


el dı́a 15 de Enero del año 2002.

6
ahora + tiempo – el tiempo está en minutos, horas, dı́as o semanas. Por
ejemplo, ahora + 5 dı́as, especifica que el comando deberı́a ser ejecutado a
la misma hora en 5 dı́as.

La hora debe ser especificada en primer lugar, seguido por la fecha opcio-
nal. Para más información sobre el formato del tiempo, lea el fichero del texto
/usr/share/doc/at-<version>/timespec.
Tras haber escrito el comando at con el argumento del tiempo, el prompt
at¿será visualizado. Escriba el comando a ejecutar, pulse [Intro] y escriba
Ctrl-D. Se puede especificar más de un comando escribiendo cada comando se-
guido de la tecla [Intro]. Después de haber escrito todos los comandos, pulse
[Intro] para obtener una lı́nea en blanco y escriba Ctrl-D. Alternativamen-
te, se puede introducir un script de shell en el intérprete de comandos y escribir
Ctrl-D en una lı́nea en blanco para salir. Si se introduce un script, la configura-
ción de la shell usada será la configuración de la shell en la SHELL del usuario, la
shell de registro del usuario o /bin/sh (el primero que se encuentre).
Si la configuración de comandos o el script intentan visualizar información, la
salida de datos será enviada vı́a correo electrónico al usuario.
Use el comando atq para visualizar los trabajos pendientes. Remı́tase a la Sec-
ción 28.3.3 para más información.
El uso del comando at puede ser restringido. Remı́tase a la Sección 28.3.5 para
más detalles.

3.2. Configuración de tareas Batch

Para ejecutar una tarea no repetitiva cuando el promedio de carga está por
debajo de 0.8, utilice el comando batch.
Tras haber escrito el comando batch, se visualiza el intérprete de comandos
at¿. Escriba el comando a ejecutar, pulse [Intro] y escriba Ctrl-D. Se pue-
de especificar más de un comando al escribir cada comando seguido de la tecla
[Intro]. Tras haber escrito todos los comandos, pulse [Intro] para acceder
a una lı́nea en blanco y escriba Ctrl-D. Se puede introducir de forma alternativa
un script de shell en el intérprete de comandos y escribir Ctrl-D en una lı́nea
en blanco para salir. Si se introduce un script, la shell usada es la configuración
de la she en el entorno SHELL del usuario, la shell de login del usuario, o /bin/sh
(todo lo que se encuentre en primer lugar). Tan pronto como el promedio de carga
está bajo 0.8, se ejecutará la configuración del comando o el script.

7
Si la configuración de comandos o el script intentan visualizar información, la
salida de datos será enviada vı́a correo electrónico al usuario.
Use el comando atq para visualizar los trabajos pendientes. Remı́tase a la Sec-
ción 3.3 para más información.
El uso del comando batch puede ser restringido. Remı́tase a la Sección 3.5
para más detalles.

3.3. Visualización de las tareas pendientes


Para visualizar las tareas pendientes at y batch, use el comando atq. Se muestra
una lista de tareas pendientes, con cada lı́nea de trabajo. Cada lı́nea está en el
número de tarea del formato, la fecha, la hora, el tipo de tarea y el nombre de
usuario. Los usuarios tan sólo pueden ver sus propias tareas. Si el usuario root
ejecuta el comando atq, se visualizarán todas las tareas para los usuarios.

3.4. Opciones adicionales de la lı́nea de comandos


Opciones adicionales de la lı́nea de comandos para at y batch incluyen:

-f Lee los comandos o script del shell desde un archivo en vez de ser especificados
en el intérprete de comandos.

-m Envı́a un email al usuario cuando se ha completado la tarea.

-v Muestra la hora en la que la tarea será ejecutada.

3.5. Control de acceso a At y Batch


Los ficheros /etc/at.allow y /etc/at.deny pueden ser usados para
restringir el acceso a los comandos at y batch. El formato de ambos ficheros de
control de acceso es un nombre de usuario en cada lı́nea. El espacio en blanco
no está permitido en ningún fichero. El (atd) demonio at no deberá ser reiniciado
si los ficheros de control de acceso son modificados. Los ficheros de control de
acceso se leen cada vez que un usuario intenta ejecutar los comandos at y batch.
El usuario root siempre puede ejecutar los comandos at y batch, sin tener en
cuenta los ficheros de control de acceso.
Si existe el fichero at.allow tan sólo se permitirá a los usuarios listados usar at
o batch y el fichero at.deny será ignorado.

8
Si at.allow no existe, a todos los usuarios listados en at.deny no se les permi-
tirá usar at o batch.

3.6. Iniciar y finalizar el servicio


Para iniciar el servicio at, use el comando /sbin/service atd start. Para detener
el servicio, use el comando /sbin/service atd stop. Se le recomienda que inicie
el servicio durante el momento de arranque. Remı́tase al Capı́tulo 14 para más
detalles sobre como arrancar el servicio cron al momento de arranque.

S-ar putea să vă placă și