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
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.
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
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á.
Veamos algunos ejemplos para entender mejor cómo funciona un horario de cron job.
0 2 * * * /ruta/al/respaldo.sh
0 * * * * /usr/local/bin/logrotate
0 0 * * 0 /usr/local/bin/mantenimiento
0 12 1 * * /usr/local/bin/generar-informe
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:
0 1,3 * * * /ruta/al/script
*/1 5 1-10 * * /ruta/a/tarea
*/30 * * * * /ruta/a/tarea-cada-media-hora
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
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.
El comando `crontab` es la forma principal de configurar los cron jobs. Aquí están las opciones más comúnmente usadas:
crontab -e
: Edita el crontab de tu usuario.crontab -l
: Lista los cron jobs de tu usuario.crontab -r
: Borra el crontab de tu usuario.crontab -u nombreDeUsuario -e
: Editar el crontab de otro usuario si tienes permiso.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.
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.
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
.
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.
Crontab también admite cadenas especiales en lugar de cinco campos:
0 0 1 1 *
.0 0 1 * *
.0 0 * * 0
.0 0 * * *
.0 * * * *
.Estas palabras clave facilitan la determinación de programas comunes.
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.
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.
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
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.
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