Cron es un administrador de tareas basado en tiempo que se usa para automatizar y programar tareas repetitivas, recopilación periódica de datos, avisos, etc. El demonio cron o crond permite a los usuarios administrar y ejecutar tareas automáticamente en intervalos de tiempo específicos. Es una de las herramientas clave para programar tareas en Linux y sistemas operativos basados en Unix.
Cron
Cron es una herramienta de línea de comandos ideada para programar tareas («cron jobs» en inglés), para ejecutarlas periódicamente y automáticamente, en la fecha y hora programada. Este administrador de tareas se puede usar para muchos fines, como:
- Recolectar logs del sistema.
- Crear copias de seguridad.
- Descargar emails o archivos de Internet.
- Programar el mantenimiento del sistema.
- Sincronizar archivos.
Las tareas se ejecutan en segundo plano, sin alterar las funcionalidades de Linux. Los usuarios pueden configurar una lista infinita de tareas cron para que se ejecuten según lo programado —cada x minuto, hora, día, mes o año—. La lista de tareas se almacena en un archivo llamado crontab.
Crontab
Crontab, abreviatura de «cron table», es tanto un comando como el archivo que contiene las tareas que el demonio cron tiene que ejecutar periódicamente. Cada usuario tiene su propio archivo de configuración y gestiona sus tareas programadas. Las tareas enumeradas en el archivo crontab contienen los comandos junto con su fecha y hora de ejecución. De modo que el administrador cron de Linux pueda ejecutar los scripts tal y como están programados al acceder y analizar el archivo.
Cron jobs
Las tareas cron tienen la siguiente sintaxis:
min h d/m mes d/s <comando a ejecutar>
Se formatean con los siguientes campos:
Campo | Valores |
min (minuto) | 0-59 |
h (hora) | 0-23 |
d/m (día del mes) | 1-31 |
mes (mes) | 1-12 |
d/s (día de la semana) | 0-6 (domingo-sábado) |
Comando | El comando de Linux que se desea programar. |
Así como con diferentes caracteres especiales, como:
Carácter especial | Uso |
* | Seleccionar todos los valores posibles en un campo. *El asterisco se puede usar para rellenar un campo sin ningún valor específico, puesto que es obligatorio rellenar todos los campos al crear una tarea cron. |
/ | Especificar un intervalo de tiempo. |
, | Seleccionar múltiples valores. |
- | Especificar un rango de tiempo. |
Ejemplos de tareas cron programadas en crontab
- Ejecutar el comando cada día a las doce y media de la noche:
30 0 * * * <comando a ejecutar>
- Ejecutar el comando cada sábado a las dos de la noche:
0 2 * * 6 <comando a ejecutar>
- Ejecutar el comando a medianoche el primer día del año:
0 0 1 1 * <comando a ejecutar>
- Ejecutar el comando cada cinco minutos de lunes a viernes:
*/5 * * * 1-5 <comando a ejecutar>
Atajos de crontab
Asimismo, para simplificar las programaciones más habituales, existen algunos atajos o comandos especiales:
Atajo | Programación |
@reboot | Ejecutar la tarea cuando se reinicia el sistema. |
@yearly o @annually | Ejecutar la tarea una vez al año. |
@monthly | Ejecutar la tarea el primer día de cada mes (0 0 1 * * ). |
@weekly | Ejecutar la tarea el primer día de cada semana (0 0 * * 0 ). |
@daily o @midnight | Ejecutar la tarea cada día a medianoche (0 0 * * * ). |
@hourly | Ejecutar la tarea cada hora (0 * * * * ). |
Comando crontab
Para gestionar tareas programadas, se pueden añadir las siguientes opciones al comando crontab
:
-e
para editar el archivo crontab actual.-l
para obtener una lista de las tareas del archivo crontab actual.-r
para eliminar de forma permanente el archivo crontab actual.-u <usuario> <opción>
para ejecutar una opción en el archivo crontab de otro usuario.
¿Necesitas ayuda con la administración de sistemas y servidores? Hablemos.