Crontab en Linux: EJEMPLOS de programación de trabajos
⚡ Resumen inteligente
En Linux, Crontab programa comandos para que se ejecuten automáticamente en horas, fechas o intervalos fijos mediante el demonio cron, lo que permite a los administradores automatizar las copias de seguridad, la limpieza de registros, las notificaciones y el mantenimiento rutinario del sistema sin ninguna intervención manual.
Crontab, abreviatura de tabla cron, es el archivo de configuración y el comando que controla Linux Programación de tareas. Las secciones siguientes explican el formato de crontab, los comandos para agregar, listar y eliminar tareas, las cadenas especiales @ y ejemplos de programación listos para usar.
¿Qué es crontab?
Cron recibe su nombre de la palabra griega «Chronos», que significa tiempo. Es un proceso del sistema (un demonio) que ejecuta tareas automáticamente según un cronograma preestablecido. Cron es un conjunto de comandos que se utilizan para ejecutar tareas programadas regularmente. Crontab significa «tabla cron» y permite usar el programador de tareas cron para ejecutar dichas tareas.
Crontab es también el nombre del programa que se utiliza para editar esa programación. Se controla mediante un archivo crontab, un archivo de configuración que enumera los comandos de shell que se ejecutarán periódicamente según la programación especificada.
¿Por qué usar tareas programadas (Cron Jobs)?
Estas son las principales razones para usar tareas programadas (cron jobs) en Linux:
- Realiza copias de seguridad programadas de archivos de registro o bases de datos.
- Elimina automáticamente los archivos de registro antiguos.
- Archielimina y purga las tablas de la base de datos.
- Envía correos electrónicos de notificación, como boletines informativos o recordatorios de caducidad de contraseñas.
- Realiza una limpieza periódica de los datos almacenados en caché.
- Automatiza tareas repetitivas en sistemas Unix y Linux.
- Automatiza el mantenimiento rutinario del sistema.
¿Cómo usar cron en Linux?
El paquete del sistema Linux incluye un útil planificador de tareas llamado crontab. Crontab es popular porque permite programar tareas para que se ejecuten como usuario root, lo que facilita la automatización de cambios en el sistema. Basta con modificar la tarea una vez y esperar a que se active de nuevo según lo programado.
Formato de crontab de Linux
Una entrada de crontab en Linux tiene seis campos. Los primeros cinco campos definen la hora y la fecha de ejecución, y el sexto campo contiene el comando que se va a ejecutar.
Sintaxis de crontab:
[Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]
El diagrama que aparece a continuación relaciona cada asterisco de una entrada de crontab con el campo que controla, desde el minuto hasta el día de la semana, seguido del comando que se va a ejecutar.
Los cinco campos de tiempo aceptan estos valores: minuto (0–59), hora (0–23), día del mes (1–31), mes (1–12 o enero–diciembre) y día de la semana (0–7, donde 0 y 7 significan domingo). Usted controla cada campo con estos caracteres especiales:
- Asterisco (*): Coincide con todos los valores posibles para ese campo.
- Defina un rango: Utilice un guion para establecer un rango, como 1-10, 30-40, enero-marzo o lunes-miércoles.
- Definir múltiples rangos: Utilice comas para combinar rangos, como abr-jun,oct-dic.
Cómo agregar/modificar Crontab
Los usuarios pueden editar sus propias tareas de crontab con el siguiente comando de crontab. La opción -u se dirige al crontab de un usuario específico, así que proporcione el nombre de usuario como se muestra en los ejemplos posteriores:
$ crontab -u -e
El comando anterior abre la configuración personal de crontab para su sistema, que puede editar con su editor de texto predeterminado.
No es necesario reiniciar cron; detecta los cambios automáticamente. Para ver sus tareas actuales, utilice:
$ crontab -l
Para eliminar las tareas de crontab, utilice el siguiente comando:
$ crontab -r
Para agregar o actualizar una tarea en el crontab, utilice el siguiente comando:
crontab -e
Para editar el crontab de otro usuario, nombre al usuario con la opción -u:
crontab -u username -e
Cómo listar Crontab
Para ver las entradas de crontab del usuario actual:
crontab -l
Para ver las entradas de crontab de un usuario específico:
crontab -u username -l
Ejemplos importantes de Crontab
Aquí tienes algunos ejemplos importantes y listos para usar de programaciones con crontab:
| Mareas Ideales para Lecciones | Comando |
|---|---|
| Ejecuta las distintas tareas programadas. El siguiente comando se ejecuta diariamente a las 7:00 y a las 17:00. |
0 7,17 * * * /scripts/script.sh
|
| Ejecuta una tarea programada (cron job) cada 5 minutos. |
*/5* * * * * /scripts/script.sh
|
| Ejecuta la tarea cada Monday a las 5 de la mañana. Esto es útil para tareas semanales como la limpieza del sistema. |
0 5 * * mon /scripts/script.sh
|
| Ejecuta tu script a intervalos de 3 minutos. |
*/3 * * * * /scripts/monitor.sh
|
| Programa una tarea cron que se ejecuta en meses específicos; en este caso, febrero, junio y septiembre. |
* * * feb,jun,sep * /script/script.sh
|
| Se ejecuta en días seleccionados. Este ejemplo se ejecuta cada Monday y miércoles a las 5 h. |
0 17 * * mon,wed /script/script.sh
|
| Permite que cron se ejecute el primer sábado de cada mes. |
0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh |
| Ejecuta un script a intervalos de 6 horas, configurado como se indica a continuación. |
0 */6 * * * /scripts/script.sh
|
| Programa una tarea para que se ejecute dos veces. Monday y martes. Utilice la siguiente configuración para hacerlo. |
0 4,17 * * mon,tue /scripts/script.sh
|
| Programa una tarea cron para que se ejecute cada 15 segundos. |
* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh |
| Programa tareas anualmente. @yearly es similar a “0 0 1 1 *”. Ejecuta la tarea una vez al año a medianoche del 1 de enero, lo cual resulta útil para los saludos de Año Nuevo. |
@yearly /scripts/script.sh
|
| Ejecuta tareas mensualmente. @monthly es similar a “0 0 1 * *”. Ejecuta la tarea a medianoche del primer día de cada mes. |
@monthly /scripts/script.sh
|
| Ejecuta múltiples tareas utilizando una única entrada de cron. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh |
| Programa tareas semanalmente. @weekly es similar a “0 0 * * 0”. Ejecuta tareas semanales como la limpieza del sistema a medianoche todos los domingos. |
@weekly /bin/script.sh
|
| Programa tareas diariamente. @daily es similar a “0 0 * * *”. Ejecuta la tarea una vez al día a medianoche. |
@daily /scripts/script.sh
|
| Ejecuta las tareas cada hora. @hourly es similar a “0 * * * *”. Ejecuta la tarea al comienzo de cada hora. |
@hourly /scripts/script.sh
|
| Ejecuta tareas al reiniciar el sistema. La anotación @reboot es útil para tareas que el sistema debería ejecutar al iniciar, permitiendo que los trabajos en segundo plano se inicien automáticamente. |
@reboot /scripts/script.sh
|


