Programar tareas con cron y crontab en Linux

Programar tareas con cron y crontab en Linux

Cron es un administrador de tareas basado en tiempo que se usa para automatizar y programar tareas repetitivas, recopilación periódica de datos, avisos, etc. El demonio cron o crond permite a los usuarios administrar y ejecutar tareas automáticamente en intervalos de tiempo específicos. Es una de las herramientas clave para programar tareas en Linux y sistemas operativos basados en Unix.

Cron

Cron es una herramienta de línea de comandos ideada para programar tareas («cron jobs» en inglés), para ejecutarlas periódicamente y automáticamente, en la fecha y hora programada. Este administrador de tareas se puede usar para muchos fines, como:

  • Recolectar logs del sistema.
  • Crear copias de seguridad.
  • Descargar emails o archivos de Internet.
  • Programar el mantenimiento del sistema.
  • Sincronizar archivos.

Las tareas se ejecutan en segundo plano, sin alterar las funcionalidades de Linux. Los usuarios pueden configurar una lista infinita de tareas cron para que se ejecuten según lo programado —cada x minuto, hora, día, mes o año—. La lista de tareas se almacena en un archivo llamado crontab.

Crontab

Crontab, abreviatura de «cron table», es tanto un comando como el archivo que contiene las tareas que el demonio cron tiene que ejecutar periódicamente. Cada usuario tiene su propio archivo de configuración y gestiona sus tareas programadas. Las tareas enumeradas en el archivo crontab contienen los comandos junto con su fecha y hora de ejecución. De modo que el administrador cron de Linux pueda ejecutar los scripts tal y como están programados al acceder y analizar el archivo.

Cron jobs 

Las tareas cron tienen la siguiente sintaxis:

min  h  d/m  mes  d/s  <comando a ejecutar>

Se formatean con los siguientes campos:

CampoValores
min (minuto)0-59
h (hora)0-23
d/m (día del mes)1-31
mes (mes)1-12
d/s (día de la semana)0-6 (domingo-sábado)
ComandoEl comando de Linux que se desea programar.

Así como con diferentes caracteres especiales, como:

Carácter especialUso
*Seleccionar todos los valores posibles en un campo.
*El asterisco se puede usar para rellenar un campo sin ningún valor específico, puesto que es obligatorio rellenar todos los campos al crear una tarea cron.
/Especificar un intervalo de tiempo.
,Seleccionar múltiples valores.
-Especificar un rango de tiempo.

Ejemplos de tareas cron programadas en crontab

  • Ejecutar el comando cada día a las doce y media de la noche:
30  0  *  *  *  <comando a ejecutar>
  • Ejecutar el comando cada sábado a las dos de la noche:
0  2  *  *  6  <comando a ejecutar>
  • Ejecutar el comando a medianoche el primer día del año:
0  0  1  1  *  <comando a ejecutar>
  • Ejecutar el comando cada cinco minutos de lunes a viernes:
*/5  *  *  *  1-5  <comando a ejecutar>

Atajos de crontab

Asimismo, para simplificar las programaciones más habituales, existen algunos atajos o comandos especiales:

AtajoProgramación
@rebootEjecutar la tarea cuando se reinicia el sistema.
@yearly o @annuallyEjecutar la tarea una vez al año.
@monthlyEjecutar la tarea el primer día de cada mes (0 0 1 * *).
@weeklyEjecutar la tarea el primer día de cada semana (0 0 * * 0).
@daily o @midnightEjecutar la tarea cada día a medianoche (0 0 * * *).
@hourlyEjecutar la tarea cada hora (0 * * * *).
Resumen de la sintaxis de las tareas cron o cron jobs, incluidos los carácteres especiales y los atajos de crontab

Comando crontab

Para gestionar tareas programadas, se pueden añadir las siguientes opciones al comando crontab:

  • -e para editar el archivo crontab actual.
  • -l para obtener una lista de las tareas del archivo crontab actual.
  • -r para eliminar de forma permanente el archivo crontab actual.
  • -u <usuario> <opción> para ejecutar una opción en el archivo crontab de otro usuario.

¿Necesitas ayuda con la administración de sistemas y servidores? Hablemos.

Si te ha gustado, compártelo en redes sociales

Servicios gestionados

Servicios de administración de sistema con acceso directo a soporte técnico especializado.

DESCUBRIR MÁS