Usar cron para ejecutar tareas repetitivas

En un sistema Linux hay muchas tareas rutinarias que deben llevarse a cabo periódicamente: la actualización de la base de datos de archivos mediante updatedb, backups, limpieza de archivos temporales, etc. En Linux disponemos de una utilidad llamada cron que nos permite realizar tareas repetitivas de manera automática, de registrar el resultado en un log, y de reportar cualquier anomalía al administrador. En este post y en el siguiente explicaremos cómo usar cron para llevar a cabo estas tareas.

Usar cron para ejecutar tareas repetitivas
Figura 1 – Usar cron para ejecutar tareas repetitivas

Cómo usar cron

Como herramienta, cron está compuesto por dos programas:

  • crond es el servicio que «despierta» cada minuto y chequea si hay tareas que ejecutar en la tabla de tareas agendadas.
  • crontab es el programa que nos permite editar la tabla (la cual en realidad consiste en un archivo de texto plano) de tareas agendadas.

Todos los usuarios pueden automatizar sus propias tareas creando una tabla mediante el programa crontab. Como dijimos anteriormente, las tablas de tareas agendadas son archivos de texto plano. Por lo general, estos archivos se guardan en /var/spool/cron y en cada línea de los mismos aparecen el detalle de cuál es la tarea que se debe ejecutar, cuándo, y utilizando qué cuenta del sistema. Por esta razón, comúnmente cada tarea agendada para que cron la ejecute recibe el nombre de crontab entry, o entrada de crontab.

Crear y agendar una tarea

Para crear una tarea agendada, utilizaremos el comando

crontab -e

A continuación, se abrirá el editor de texto que tengamos configurado por defecto (vim, por ejemplo), con el que deberemos escribir (en la primera línea libre del archivo que se abra) utilizando el siguiente formato:

minuto hora día_del_mes día_de_la_semana usuario (opcional) comando

Donde

  • minuto (0 a 59)
  • hora (0 a 23)
  • día_del_mes (1 a 31)
  • mes (1 a 12)
  • día_de_la_semana (0: Domingo a 6: Sábado)

Por ejemplo, para ejecutar el comando /bin/updatedb todos los días lunes de septiembre a las 13:55, agregaríamos la siguiente línea en el crontab de un usuario que tenga permiso para ejecutar tal programa:

55 13 * 9 2 /bin/updatedb

Cuando colocamos el comando en el crontab entry, debemos escribir la ruta completa al ejecutable

  • Los dos primeros números indican la hora (13:55)
  • La estrella (o asterisco) indica que la regla se cumple sin importar qué día del mes (1 al 31) caiga lunes.
  • Los siguientes dos números representan el mes en el que queremos ejecutar la tarea (9: septiembre) y el día de la semana (2: lunes).

En el próximo post compartiremos más ejemplos sobre cómo usar cron y de la teoría que los respalda. ¡Nos leemos en breve!