Capítulo 5: Administración del servidor Ubuntu

Publicado por P. Ruiz en

5.7. Tareas programadas

Es muy habitual que ciertas tareas administrativas, como la exportación de datos, copias de seguridad, instalación de actualizaciones, sincronizar el reloj del sistema con un servidor de tiempo, etc., se vayan repitiendo a lo largo del tiempo con una determinada frecuencia.

Muchas veces, habremos conseguido automatizarlas a través de un script y otras consistirá, simplemente, en ejecutar un programa particular con unos argumentos específicos. En cualquier caso, para el administrador será de gran ayuda poder iniciar la ejecución de esos programas o scripts de forma automatizada sin tener que estar pendiente de hacerlo a mano en el momento oportuno. Pues bien, en eso consisten las tareas programadas.

En Linux existen dos servicios (cron y anacron) y dos comandos (crontab y at ) que nos facilitan la ejecución de tareas en momentos concretos. En este apartado vamos a aprender a utilizarlos.

Ejecutar tareas a intervalos regulares

El servicio que se encarga de ejecutar tareas en intervalos regulares es cron, que está formado por el demonio crond y varias tablas que definen los trabajos que se deben ejecutar y con qué frecuencia. Normalmente, crond se inicia durante el arranque del sistema y se activa cada minuto para revisar las tablas y comprobar si debe ejecutar alguna acción.

Tanto el administrador como los propios usuarios gestionan las tablas con los trabajos pendientes mediante el comando crontab, y para enseñarte a manejarlo ya hemos publicado en SomeBooks.es algunos artículos:

Cómo gestiona el sistema las tareas programadas

El algoritmo concreto usado por cron en cada sistema puede variar ligeramente, pero en general, el mecanismo es el siguiente:

  1. Durante el proceso de arranque del sistema, se busca en el directorio /var/spool/cron/crontabs los archivos con las tareas programadas de cada cuenta de usuario (consulta el artículo, mencionado más arriba, que habla de los archivos relacionados con las tareas programadas, para tu versión de Ubuntu).

  2. Para cada archivo encontrado, se establece el momento en el que habrá que ejecutar cada una de sus tareas y se sitúan en una lista ordenada por tiempo.

  3. Se inicia un proceso repetitivo donde:

    1. Se analiza la primera tarea de la lista anterior y se averigua si es el momento de ejecutarla.

    2. En caso afirmativo, la ejecuta en segundo plano usando los privilegios de su cuenta propietaria.

      Después, se establece el siguiente momento de ejecución de la tarea y se sitúa en la posición adecuada de la lista.

      Cuando termine, se vuelve al paso a).

    3. El demonio se suspende hasta el siguiente minuto (normalmente usando la función sleep).

      Por este motivo no se discriminan periodos de tiempo inferiores a 1 minuto.

    4. Al despertar, comprueba si se han producido cambios en la programación de tareas.

      Si es necesario se rehace la lista de tareas.

Ejecutar tareas asíncronas

El servicio cron resulta muy útil cuando tratamos con servidores u otros equipos pensados para funcionar continuamente. Sin embargo, en los equipos que pueden permanecer apagados durante periodos indeterminados, como ordenadores de escritorio o portátiles, cron puede resultar inútil porque, en el momento en el que se venza un plazo, el ordenador puede estar desconectado y, como ya vimos antes, la tarea correspondiente no se recuperará.

En estos casos, puede resultar muy útil el servicio anacron (el nombre proviene del inglés anachronistic cron). A diferencia de cron, si programamos una tarea para una hora en particular y, en ese momento, el ordenador está apagado, la tarea se retomarán en cuanto sea posible. Esto nos permitirá atender tareas críticas que no puedan dejar de atenderse.

Para comprobar cómo funcionan las tareas asíncronas, puedes recurrir a alguno de los artículos que ya hemos publicado en SomeBooks.es:

Ejecutar tareas en un momento concreto

En ocasiones, en lugar de realizar una tarea de forma periódica, lo que necesitamos es ejecutarla sólo una vez, pero en un momento particular del futuro. Para cumplir con ese objetivo, disponemos del comando at.

Para comprobar cómo funcionan las tareas aplazadas en Ubuntu, puedes recurrir a alguno de los artículos que ya hemos publicado en SomeBooks.es:

Administrar tareas programadas desde la interfaz gráfica

La herramienta que se utilizaba tradicionalmente para administrar tareas programadas desde la interfaz gráfica de Ubuntu era gnome-schedule. Sin embargo, en el momento de escribir esta documentación, parece que su desarrollo se encuentra detenido.

En cualquier caso, si eres de los que no le gusta la terminal, y tienes una versión moderna del sistema operativo, siempre puedes recurrir a herramientas como Webmin que, además de ofrecer una interfaz web bastante cómoda, permite administrar el equipo desde un navegador que se ejecute de forma local, o en otro equipo de la misma red.

De hecho, en SomeBooks.es ya hemos publicado artículos que nos ofrecen ambas soluciones:

Actividad 5: Tareas programadas

Sigue las indicaciones del capítulo para realizar las siguientes tareas:

  • Sigue las indicaciones del apartado 5.7. Tareas programadas para crear un script como el que aparece en el ejemplo y duplique el archivo que tú elijas una vez cada hora durante los viernes de este mes.

  • Modifica la configuración del sistema para que los usuarios no puedan programar tareas.

  • Consigue que, pasados 5 minutos del primer arranque diario del ordenador, se realice una copia de seguridad con duplicity. Debes asegurarte de que los siguientes arranques de un mismo día no crean nuevas copias de seguridad.

  • Consigue que el ordenador se apague dentro de 3 minutos.