Cron Job
A cron job is a time-based job scheduler in Unix-like operating systems that allows users to execute commands or scripts automatically at specified intervals or...
Un cron job es un planificador de tareas basado en tiempo en sistemas operativos tipo Unix. Permite a los usuarios programar comandos o scripts para que se ejecuten automáticamente en momentos, fechas o intervalos específicos. El componente central es el demonio cron, un proceso en segundo plano que comprueba constantemente los archivos de configuración definidos por el usuario, conocidos como crontabs, para ver las tareas programadas. Cada usuario puede tener su propio archivo crontab, y también existen archivos crontab a nivel de sistema. La sintaxis para definir un cron job implica cinco campos de hora y fecha seguidos del comando a ejecutar: minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12) y día de la semana (0-7, donde tanto 0 como 7 representan el domingo). Un asterisco () en un campo indica "cada valor posible" para ese campo. Por ejemplo, 0 2 /ruta/a/script.sh ejecutaría el script /ruta/a/script.sh todos los días a las 2:00 AM. Los cron jobs son esenciales para automatizar tareas rutinarias como el mantenimiento del sistema, copias de seguridad, sincronización de datos, generación de informes y envío de notificaciones periódicas. Una mala configuración puede provocar que las tareas no se ejecuten o se ejecuten de forma no intencionada, lo que subraya la necesidad de una planificación y pruebas cuidadosas.
graph LR
Center["Cron Job"]:::main
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Explícalo como si tuviera 5 años
Es como poner un despertador para que tu ordenador haga automáticamente una tarea, como sacar la basura o regar las plantas, a una hora específica.
🤓 Expert Deep Dive
Cron, derivado de la palabra griega 'chronos' (tiempo), es una utilidad fundamental para la automatización de tareas en sistemas tipo Unix. El demonio cron (crond) se activa cada minuto para comprobar los archivos crontab en busca de trabajos programados para ejecutarse en ese minuto. Los archivos Crontab contienen entradas que especifican el horario (campos de tiempo) y el comando o script a ejecutar. La especificación de tiempo utiliza una sintaxis específica: * comando. Cada asterisco representa una unidad de tiempo: minuto, hora, día del mes, mes, día de la semana. Caracteres especiales como comas (listas), guiones (rangos) y el asterisco (comodín) proporcionan flexibilidad. Los crontabs a nivel de sistema (por ejemplo, /etc/crontab, /etc/cron.d/) permiten tareas de administración del sistema, mientras que los crontabs de usuario (crontab -e) son para tareas de usuarios individuales. Las variables de entorno y el contexto de ejecución de los cron jobs pueden diferir significativamente de los shells interactivos, lo que a menudo provoca problemas si los scripts no están escritos para ser independientes del entorno (por ejemplo, especificando rutas completas a los ejecutables). Anacron es una utilidad relacionada diseñada para ejecutar trabajos que se hayan podido perder debido a que el sistema estaba apagado, lo que la hace adecuada para portátiles o sistemas conectados de forma intermitente.