Cron es una utilidad para programar operaciones en sistemas operativos tipo Unix, incluyendo Linux. Permite a los usuarios crear tareas cron que se ejecutarán automáticamente a una hora determinada. Con frecuencia, la herramienta Cron se utiliza para el mantenimiento del sistema operativo, la creación de copias de seguridad y otras tareas administrativas.
En este artículo te explicaremos cómo usar el demonio Cron en un sistema operativo Linux.
Definición de Cron y Crontab
¿Qué es cron?
Cron es un demonio en sistemas Unix/Linux que ejecuta tareas programadas automáticamente en segundo plano según un horario definido. Se usa para automatizar tareas como copias de seguridad, mantenimiento del sistema o ejecución de scripts.
Crontab
Crontab es el comando usado para gestionar el planificador Cron. Permite crear, editar o eliminar un archivo crontab, que contiene los comandos y su programación (minutos, horas, días, etc.) para que el demonio cron los ejecute. Cada usuario tiene su propio archivo crontab, y los administradores pueden gestionar el crontab del sistema en /etc/crontab.
Archivos de configuración
Los archivos /etc/cron.allow y /etc/cron.deny controlan quién puede usar el planificador Cron. Estos archivos son opcionales y, por defecto, no existen:
/etc/cron.allow: Si existe, solo los usuarios listados en este archivo pueden usar Cron./etc/cron.deny: Si existe ycron.allowno existe, los usuarios listados en este archivo no pueden usar Cron.
Si /etc/cron.allow existe, tiene prioridad y /etc/cron.deny se ignora. Cada línea en estos archivos debe contener un solo nombre de usuario, sin espacios. Los permisos se verifican cada vez que un usuario intenta crear o modificar una tarea cron
Abrir la tabla de tareas cron
La tabla cron (o crontab) es un archivo de sistema donde los usuarios pueden crear tareas cron. Cada línea en crontab representa una tarea individual con información sobre la programación y el comando a ejecutar.
Para abrir la tabla cron del usuario actual, usa el siguiente comando:
crontab -eNota: Este comando edita la tabla cron del usuario actual. Si necesitas programar tareas a nivel de sistema, usa sudo crontab -e para el usuario root o edita archivos en /etc/crontab con permisos de administrador.
Sintaxis de las tareas cron

Las tareas cron tienen su propia sintaxis, que se ve así:
MIN HOUR DOM MON DOW command-to-execute
# minuto(s) hora(s) día(s) mes(es) día de la semana(s) comando(s)Los campos se separan por espacios o tabulaciones. Los cinco primeros son valores numéricos, y el sexto es el comando que se ejecutará.
Donde:
- MIN: Indica el minuto de la hora en que se ejecutará el comando (rango: 0-59);
- HOUR: Indica la hora del día (rango: 0-23);
- DOM: Significa el día del mes (rango: 1-31);
- MON: Indica el mes del año (rango: 1-12 o JAN-DEC);
- DOW: Significa el día de la semana (rango: 0-6 o SUN-SAT, donde 0 y 7 suelen representar el domingo, dependiendo del sistema);
- command-to-execute: Significa el comando o script que debe ejecutarse a la hora especificada.
En la siguiente tabla se describe brevemente cada uno de los campos:
| Campo | Rango de valores | Descripción |
|---|---|---|
| minuto | 0-59 | Minuto de inicio del comando |
| hora | 0-23 | Hora de inicio |
| día | 1-31 | Día (del mes) de inicio |
| mes | 1-12 | Mes de inicio |
| día semana | 0-6 | Día de la semana de inicio (domingo=0, lunes=1, etc.) |
| comando | Secuencia de comandos a ejecutar |
Nota: El valor de los cinco primeros campos puede ser
*(asterisco), lo que significa todos los valores válidos, o una lista de elementos separados por comas. Un elemento es un número o un rango de números indicado por dos valores separados por un guion (por ejemplo, 10-12).
Entonces, también se pueden usar operadores especiales para especificar el tiempo de ejecución de las tareas cron:
*(asterisco): Significa todos los valores posibles para ese campo;,(coma): Se usa para enumerar valores de tiempo;-(guion): Se usa para indicar un rango de valores;/(barra inclinada): Se usa para especificar intervalos regulares. Por ejemplo,*/10en el campo de minutos significa “cada 10 minutos”.
Ejemplos de creación de tareas cron
Supongamos que necesitamos crear una copia de seguridad del directorio /home/user/documents en /backup/documents todos los días a medianoche. Para ello, usaremos la utilidad rsync y escribiremos la siguiente tarea en crontab:
0 0 * * * /usr/bin/rsync -a /home/user/documents /backup/documentsTambién, cada domingo a las 2 AM queremos limpiar el contenido del directorio /tmp. Para resolver esto, usaremos esta tarea cron:
0 2 * * 0 /usr/bin/find /tmp -type f -atime +7 -deleteTenemos un script /home/user/scripts/script.py en nuestro sistema operativo. Necesitamos ejecutarlo cada 15 minutos. Para esto, escribiremos la siguiente línea en la tabla cron:
*/15 * * * * /usr/bin/python3 /home/user/scripts/script.pyPara registrar la salida de esta tarea en un archivo de log, podemos añadir una redirección:
*/15 * * * * /usr/bin/python3 /home/user/scripts/script.py >> /home/user/logs/script.log 2>&1Esto guarda tanto la salida estándar como debi como los errores en /home/user/logs/script.log.
La tarea cron que se muestra a continuación permitirá ejecutar el script de mantenimiento del sistema operativo maintenance.sh a la 1 AM todos los días del 1 al 7 de cada mes:
0 1 1-7 * * /home/user/scripts/maintenance.shFinalmente, crearemos una tarea cron que generará un informe usando el script generate_report.sh a las 2 AM todos los días de enero, marzo, mayo y julio:
0 2 * 1,3,5,7 * /home/user/scripts/generate_report.shSi tu script requiere variables de entorno, puedes definirlas en el crontab. Por ejemplo:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/15 * * * * /usr/bin/python3 /home/user/scripts/script.pyEjemplo extra de uso de cron
Cron es útil para tareas como la rotación de archivos, limpieza de directorios temporales o copias de seguridad. Por ejemplo, para limpiar archivos en /tmp con más de 1 día de antigüedad, ejecutándose cada 2 horas (a las 0:00, 2:00, 4:00, etc.):
0 */2 * * * /usr/bin/find /tmp -type f -mtime +1 -deleteVerifica su ejecución con:
tail /var/log/syslog | grep CRONCadenas especiales de representación de tiempo en crontab
Las cadenas especiales en crontab son accesos directos que permiten programar operaciones sin necesidad de especificar manualmente cada campo de tiempo y fecha. Algunas de ellas son:
@hourly: Ejecuta la tarea cada hora (0 * * * *);@dailyo@midnight: Una vez al día a medianoche (0 0 * * *);@weekly: Una vez a la semana a medianoche el domingo (0 0 * * 0);@monthly: Una vez al mes a medianoche el día 1 (0 0 1 * *);@yearlyo@annually: Una vez al año a medianoche el 1 de enero (0 0 1 1 *);@reboot: Una vez en cada reinicio del sistema operativo.
Nota: La cadena
@rebootdepende del demonio cron y puede no estar soportada en todos los sistemas. Asegúrate de que el usuario que ejecuta la tarea tenga permisos para ejecutarla al iniciar el sistema.
Por ejemplo, necesitamos:
- Guardar una copia de seguridad del directorio
/home/user/documentsen/backup/documentstodos los días a medianoche; - Ejecutar el script de Python
script.pydel directorio/home/user/scriptscada hora; - Ejecutar el script
/path/to/your/task.shcada vez que se reinicie el sistema operativo.
Para esto, escribiremos las siguientes líneas en la tabla cron:
@daily /usr/bin/rsync -a /home/user/documents /backup/documents
@hourly /usr/bin/python3 /home/user/scripts/script.py
@reboot /path/to/your/task.shVer y eliminar tareas cron
Para mostrar el contenido de crontab en la ventana de la terminal, ejecuta en la línea de comandos:
crontab -lPara verificar si tus tareas cron se ejecutan correctamente, revisa los logs del sistema, normalmente en /var/log/syslog o /var/log/cron, dependiendo de la distribución de Linux. Usa un comando como:
grep CRON /var/log/syslogY para eliminar todas las tareas cron, usa el comando crontab con la opción -r:
crontab -rConclusiones
Cron es una herramienta poderosa para automatizar tareas en Linux, desde copias de seguridad hasta scripts de mantenimiento. Con la sintaxis y ejemplos de este artículo, puedes programar tareas para que se ejecuten en el momento exacto que necesitas.
Un consejo: siempre prueba tus comandos manualmente antes de añadirlos al crontab para evitar errores. ¡Automatiza tus tareas y ahorra tiempo en la administración de tu sistema!
Si tienes preguntas, déjalas en los comentarios y te ayudaremos.







Pingback: Seguridad Ubuntu: 8 Pasos Clave para Blindar tu Sistema