Todos hemos estado ahí: son las 11 PM y recuerdas que olvidaste ejecutar el script de backup. O peor, tu jefe te pide un reporte manual todos los lunes a las 9 AM. Existe una herramienta que será tu mejor asistente silencioso: el Cron.


¿Qué es un Cron?

Un cron es una utilidad en sistemas Unix y Linux que permite programar la ejecución de comandos o scripts en intervalos de tiempo específicos. Estos intervalos pueden ser minutos, horas, días, meses o incluso días de la semana.

El término «cron» proviene de la palabra griega «chronos», que significa tiempo. Y es que, en esencia, los crons son maestros del tiempo: saben exactamente cuándo y cómo ejecutar las tareas que les asignas.

photo of sticky notes and colored pens scrambled on table

¿Para qué se utilizan los Crons?

Los crons son increíblemente versátiles y se utilizan en una amplia variedad de escenarios. Te dejo algunos ejemplos:

  1. Backups automáticos: Imagina que tienes un servidor con información crítica. ¿No sería genial que cada noche, a las 2:00 a.m., se hiciera una copia de seguridad automáticamente? Con un cron, puedes programar esta tarea y olvidarte de hacerla manualmente.
  2. Actualizaciones periódicas: ¿Te molesta tener que actualizar tus paquetes de software cada semana? Configura un cron para que lo haga por ti cada domingo a las 3:00 p.m.
  3. Envío de correos electrónicos: Si tienes un blog o un negocio, puedes úsalo para enviar correos automáticos a tus suscriptores con novedades o promociones.
  4. Limpieza de archivos temporales: ¿Tu sistema se llena de archivos temporales que no necesitas? Programa un cron para que los elimine cada mes y mantenga tu sistema limpio.
  5. Monitoreo de servidores: Usa los crons para ejecutar scripts que verifiquen el estado de tu servidor y te envíen alertas si algo no está funcionando correctamente.

¿Cómo funciona un Cron?

Los crons se gestionan a través de un archivo llamado crontab (cron table). Este archivo contiene las tareas programadas y el momento en que deben ejecutarse. Cada línea en el crontab representa una tarea y sigue un formato específico:

* * * * * comando_a_ejecutar

Los asteriscos representan, en orden:

  1. Minuto (0-59)
  2. Hora (0-23)
  3. Día del mes (1-31)
  4. Mes (1-12)
  5. Día de la semana (0-7, donde 0 y 7 son domingo)

Por ejemplo, si quieres ejecutar un script de backup todos los días a las 3:00 a.m., tu crontab se vería así:

0 3 * * * /ruta/al/script_de_backup.sh

¿Cómo configurar un Cron? (Guía paso a paso)

Es hora de poner el ejemplo a la práctica. Si es tu primera vez configurando un cron, no te preocupes. Es fácil de crear y configurar uno desde cero:

Paso 1: Abre tu terminal

En Linux, todo se hace desde la terminal. Te recomiendo la guía para principiantes para dominar la línea de comandos para sacar el mayor potencial y comprendas qué hace cada comando.

Simplemente abre la aplicación «Terminal» en tu sistema.

Paso 2: Edita el archivo crontab

Para agregar una tarea programada, debes editar el archivo crontab. Escribe el siguiente comando en la terminal:

crontab -e

Esto abrirá un editor de texto donde podrás agregar tus tareas programadas. Si es la primera vez, es posible que te pregunte qué editor prefieres (nano, vim, etc.). Te recomiendo utilizar nano por su sencillez.

Paso 3: Agrega una tarea

Recuerda que en el archivo crontab, cada línea representa una tarea. Supongamos que quieres ejecutar un script llamado backup.sh todos los días a las 3:00 a.m. Agrega la siguiente línea al final del archivo:

0 3 * * * /ruta/al/backup.sh
  • 0 indica el minuto 0 (justo a la hora en punto).
  • 3 indica las 3:00 a.m.
  • Los asteriscos (*) significan «cada día, cada mes, cada día de la semana».

Paso 4: Guarda y cierra el archivo

Si estás usando nano, guarda el archivo presionando CTRL + O y luego cierra el editor con CTRL + X.

Paso 5: Verifica que la tarea se haya agregado

Para asegurarte de que la tarea se haya agregado correctamente, puedes listar las tareas programadas con el siguiente comando:

crontab -l

Esto mostrará todas las tareas que has configurado. ¡Felicidades! Has configurado tu primer cron.


5 ejemplos de Cron Jobs que te automatizarán la vida

  1. Recordatorios diarios: ¿Eres de los que olvida tomar agua? Crea un cron que te envíe un mensaje cada hora recordándote que debes hidratarte.
   0 * * * * echo "¡Es hora de tomar agua!" | mail -s "Recordatorio" tu@email.com
  1. Apaga el equipo por la noche: Programa un cron para apagar la computadora de manera automática a las 10:00 p.m.
   0 22 * * * /sbin/shutdown -h now
  1. Sincronizar archivos con la nube: Sincroniza tus archivos de otros servicios en la nube (Google Drive o Dropbox) cada 6 horas.
   0 */6 * * * /ruta/al/script_de_sincronizacion.sh
  1. Generar reportes semanales: Genera reportes de ventas cada lunes a las 8:00 a.m.
   0 8 * * 1 /ruta/al/script_de_reportes.sh
  1. Limpiar la papelera de reciclaje: Vacía la papelera de reciclaje cada domingo a medianoche.
   0 0 * * 0 rm -rf /home/usuario/.local/share/Trash/*

¿Cómo soluciono problemas comunes con cron jobs?

Te comparto algunas soluciones que te pueden ayudar:

1. Verifica que el demonio cron esté funcionando

Asegúrate de que el servicio cron esté activo.

systemctl status cron

Si no está corriendo, inícialo con:

sudo systemctl start cron

Para Windows en WSL, en vez de utilizar systemctl usa:

service cron status

E iniciarlo con:

service cron start

2. Asegúrate de que el cron job esté configurado correctamente

Lista tus trabajos configurados con:

crontab -l

Un error en la configuración hará que el cron job no se ejecute. Verifica que su sintaxis está correcta

3. Verifica los permisos de los scripts

Asegúrate de que tiene permisos de ejecución:

chmod +x /ruta/al/script.sh

4. Especifica rutas absolutas

Cron no usa las mismas variables de entorno que tu sesión de usuario. Asegúrate de usar rutas completas para los comandos y archivos en tus cron jobs.

Ejemplo: Si tu script llama a python, utiliza la ruta completa:

/usr/bin/python3 /ruta/al/script.py

5. Revisa los logs de cron

Busca entradas relacionadas con cron en el log del sistema. Revisa los logs porque contienen información de su ejecución o si hubo errores.

grep CRON /var/log/syslog

(En algunas distribuciones, puede estar en un archivo diferente, como /var/log/cron).

6. Prueba manualmente tu comando o script

Ejecútalo desde la terminal para confirmar que funciona sin errores:

/ruta/al/script.sh

Si tu script depende de variables de entorno específicas, asegúrate de incluirlas explícitamente ya que el cron no las hereda de tu sesión.

7. Redirige la salida para depuración

Si no estás seguro de qué está haciendo tu cron job, redirige su salida estándar y de error a un archivo de log:

* * * * * /ruta/al/script.sh >> /ruta/al/log_cron.txt 2>&1

8. Revisa el usuario que ejecuta el cron job

Asegúrate de que este tenga acceso a los archivos y comandos requeridos. Verifica que el usuario tiene permisos para la ejecución. Si necesitas permisos de superusuario, usa sudo crontab -e para configurarlo.

9. Problemas con variables de entorno

Cron utiliza un entorno mínimo. Si tu script depende de variables como PATH, inclúyelas explícitamente al inicio del archivo:

PATH=/usr/local/bin:/usr/bin:/bin

10. Errores en la programación del tiempo

Asegúrate de que los tiempos programados sean correctos. Usa Crontab Guru para verificar la configuración de tu horario.

Ejemplo práctico:

Depura el cron job de esta manera:

  1. Redirige la salida a un log:
    • * * * * /ruta/script.sh >> /ruta/log_cron.txt 2>&1
  2. Comprueba los permisos del script:
    • chmod +x /ruta/script.sh
  3. Verifica que cron esté corriendo:
    • systemctl status cron
  4. Asegúrate de usar rutas absolutas dentro del script.

Conclusión

Los crons son tu mejor aliado a la hora de automatizar. Con un poco de práctica, podrás dominar esta herramienta y hacer que tu sistema trabaje para ti. Por ejemplo, a la hora de gestionar un servidor, administrar un blog o simplemente automatizar algunas tareas en tu computadora personal.


5 retos para poner en práctica lo aprendido

Estos 5 retos son para poner a prueba tu aprendizaje, o crees ideas para desarrollar tus propios crons:

  1. Crea un cron para hacer un backup diario: Configura un cron que copie una carpeta importante a una ubicación segura todos los días a las 11:00 p.m.
  2. Programa un recordatorio semanal: Usa un cron para enviar un correo electrónico cada viernes con una lista de tareas pendientes.
  3. Automatiza la actualización de tu sistema: Actualice los paquetes de tu sistema cada domingo a las 6:00 a.m.
  4. Limpia archivos temporales: Crea un cron que elimine archivos temporales de una carpeta específica cada mes.
  5. Monitorea el uso de disco: Envía un correo si el uso de disco supera el 80%.

¿Te animas a probar estos retos? 🚀


Avatar de darkusphantom

Sigueme en mis redes sociales para más contenido


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *