WindowsMacSoftwareConfiguraciónSeguridadProductividadLinuxAndroidRendimientoConfiguraciónApple Todo

Cómo usar cron jobs en Linux

Editado 19 Hace unas horas por ExtremeHow Equipo Editorial

AutomatizaciónProgramaciónLínea de comandosGestión de tareasScriptsMantenimiento del sistemaGestión de Fecha/HoraUtilidadesSecuencias de comandosAdministrador del sistema

Cómo usar cron jobs en Linux

Traducción actualizada 19 Hace unas horas

Los cron jobs son un sistema muy poderoso y flexible para programar tareas en Linux. Te permiten automatizar procesos, rutinas o scripts en tu servidor. Imagina poder automatizar tus copias de seguridad, verificar el estado del sistema, borrar archivos temporales o enviar correos electrónicos recurrentes sin tener que recordar hacer estas tareas manualmente. Los cron jobs se ejecutan en segundo plano en los momentos programados. Usar cron no solo puede ahorrarte esfuerzo, sino también ahorrarte horas preciosas de tu trabajo y aumentar la eficiencia general del sistema.

Comenzando con los cron jobs

El demonio cron es un proceso en segundo plano que gestiona los cron jobs en Linux. Para que los cron jobs funcionen, el demonio cron debe estar ejecutándose en tu sistema. La mayoría de las distribuciones de Linux vienen con cron preinstalado. Sin embargo, si no está instalado, puedes instalarlo usando tu gestor de paquetes.

Aquí te explicamos cómo hacerlo en diferentes distribuciones:

Sistemas basados en Debian/Ubuntu:
sudo apt-get update sudo apt-get install cron
Sistemas basados en Red Hat/CentOS:
sudo yum update sudo yum install cronie

Una vez instalado, puedes iniciar el servicio cron con lo siguiente:

sudo systemctl start cron

Asegúrate de que se inicie al arrancar habilitándolo:

sudo systemctl enable cron

Comprendiendo la tabla de cron (crontab)

Los cron jobs se definen en un archivo llamado crontab. Cada usuario puede tener su propio crontab, y también hay un archivo crontab a nivel del sistema. El archivo crontab define el horario y el comando para cada cron job. Puedes editar un crontab de usuario usando el comando `crontab -e`. Esto abre el archivo crontab en el editor del sistema por defecto.

El archivo crontab contiene líneas, cada una de las cuales representa una tarea programada, definida en una sintaxis específica. Una entrada típica de cron job se ve así:

* * * * * /ruta/al/comando

Cada campo está separado por un espacio y representa una unidad de tiempo diferente:

El comando en sí sigue estas especificaciones de tiempo y define qué acción se ejecutará.

Ejemplo general de programación

Veamos algunos ejemplos para entender mejor cómo funciona un horario de cron job.

Cron también admite el uso de operadores como coma, guion y barra diagonal para definir múltiples valores o intervalos. Aquí te decimos cómo:

Variables de entorno

El cron job se ejecuta en su propio entorno limitado, y a veces, puede que no tenga las mismas configuraciones que tu shell de usuario. A menudo, es necesario establecer variables de entorno en el archivo crontab para que el script se ejecute correctamente. Por ejemplo, es común establecer la variable PATH:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin * * * * * /ruta/a/miTrabajo

Redirección de salida y registro

Por defecto, cron envía correo al usuario que ejecuta el cron job, conteniendo cualquier salida producida por el trabajo. Si no quieres recibir la salida por correo, o quieres registrarla, puedes redirigir la salida a un archivo.

Aquí te mostramos cómo puedes redirigir la salida estándar y error:

* * * * * /ruta/al/script > /ruta/al/archivoLog 2>&1

Este ejemplo envía tanto la salida como cualquier mensaje de error a un archivo de registro.

Usando el comando crontab

El comando `crontab` es la forma principal de configurar los cron jobs. Aquí están las opciones más comúnmente usadas:

Gestión avanzada de cron jobs

Aparte de las operaciones básicas, también hay patrones de uso avanzados que puedes usar para aprovechar aún más el poder de los cron jobs.

Vinculación de trabajos con dependencias

A veces, quieres que algunas tareas se ejecuten solo si otra se completa con éxito. En tales casos, el scripting viene al rescate. Puedes crear un script maestro que primero llame a un script y luego al otro, verificando las condiciones de salida o resultados esperados.

#!/bin/bash if /ruta/al/primer-script; then /ruta/al/segundo-script fi

Pon este script maestro en tu crontab, y efectivamente has combinado las dos tareas.

Archivos temporales de cron

A veces, puede resultar conveniente usar un archivo crontab temporal, especialmente en escenarios de scripting. Puedes crear un archivo crontab y usarlo con el comando `crontab` de la siguiente manera:

crontab miArchivoCron

Este comando configura los cron jobs del usuario basados en el contenido de miArchivoCron.

Editando cron jobs a nivel del sistema

Además del crontab personal, hay un archivo crontab del sistema que programa trabajos para todos los usuarios. Se encuentra en /etc/crontab. Aquí, los trabajos tienen un campo adicional antes del comando, que especifica el usuario bajo el cual se ejecutará el script. Los scripts generales de mantenimiento del sistema se pueden encontrar aquí.

/etc/crontab * * * * * usuario /ruta/al/comando

Además, los scripts en directorios como /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, y /etc/cron.monthly se ejecutan en sus respectivos momentos, y esto es gestionado por la configuración del sistema.

Manejo de palabras clave especiales de cron

Crontab también admite cadenas especiales en lugar de cinco campos:

Estas palabras clave facilitan la determinación de programas comunes.

Consideraciones de seguridad

La seguridad es una consideración importante cuando se trata de cron jobs. Los usuarios con acceso a la función cron pueden crear sus propios trabajos, que pueden interactuar con el sistema. Los archivos /etc/cron.allow y /etc/cron.deny pueden gestionar qué usuarios tienen el privilegio de usar cron.

Por defecto, si /etc/cron.allow existe, debe contener el nombre del usuario para permitirle acceso a cron. De lo contrario, si /etc/cron.deny existe, no debe contener el nombre del usuario para permitir el acceso. Si estos archivos no existen, usualmente, solo root puede programar cron jobs.

Pruebas y resolución de problemas de cron jobs

Los cron jobs pueden causar errores si la sintaxis del comando es incorrecta o si no se cumplen las condiciones ambientales. Aquí te presentamos algunas formas de probar y solucionar problemas de cron jobs.

Pruebas

Prueba tu comando manualmente en la terminal para asegurarte de que funcione como esperas, ya que cron no proporcionará un indicador interactivo.

Configura temporalmente el cron job para que se ejecute cada minuto para asegurarte de que se active correctamente.

* * * * * /ruta/al/comando

Solución de problemas

Puedes revisar el log del demonio cron para cualquier problema. Este archivo de log generalmente se encuentra aquí:

/var/log/cron /var/log/syslog (dependiendo de la distribución)

Este log puede ayudar a determinar si el cron job fue ejecutado o si encontró un error.

Como se mencionó anteriormente, redirigir la salida a un archivo puede ayudar a capturar mensajes de error para su investigación.

Conclusión

Cron es una herramienta fundamental en los sistemas Linux, proporcionando programación de tareas automatizadas con fiabilidad y flexibilidad. Al entender la sintaxis, el entorno y la configuración de los cron jobs, puedes gestionar eficientemente las tareas rutinarias, optimizando así tus procesos de trabajo. Ya seas un administrador del sistema o un desarrollador, dominar los cron jobs puede aumentar significativamente tu productividad.

Esperamos que esta guía detallada te ayude a usar cron jobs efectivamente. ¡Disfruta programando!

Si encuentras algo incorrecto en el contenido del artículo, puedes


Comentarios