Introducción
Crontab es una herramienta fundamental en sistemas Linux que permite programar la ejecución de comandos o scripts en momentos específicos. Esto es esencial para automatizar tareas como copias de seguridad, actualizaciones del sistema o cualquier proceso que deba ejecutarse de forma regular.
Campos de Crontab
Cada entrada en crontab se define mediante una línea con seis campos separados por espacios:
Campo | Descripción | Valores |
---|---|---|
Minuto | Controla el minuto de la hora en que el comando será ejecutado. | 0-59 |
Hora | Controla la hora en que el comando será ejecutado (formato de 24 horas). | 0-23 |
Día del mes | Día del mes en que se quiere ejecutar el comando. | 1-31 |
Mes | Mes en que el comando se ejecutará. | 1-12 o nombre del mes en inglés (tres primeras letras) |
Día de la semana | Día en la semana en que se ejecutará el comando. | 0-7 o nombre del día en inglés (tres primeras letras) (0 y 7 = domingo) |
Usuario | Usuario que ejecuta el comando. | Nombre de usuario del sistema |
Comando | Comando, script o programa que se desea ejecutar. | Puede contener múltiples palabras y espacios. |
Uso del asterisco (*)
Un asterisco (*) como valor en los primeros cinco campos indica que el comando se ejecutará en todos los valores posibles para ese campo. Por ejemplo, un * en el campo de minuto indicará que el comando se ejecutará cada minuto.
Ejemplos de uso de Crontab
A continuación, se presentan algunos ejemplos de cómo usar crontab:
Crontab | Descripción |
---|---|
01 * * * * | Se ejecuta al minuto 1 de cada hora de todos los días. |
15 8 * * * | A las 8:15 a.m. de cada día. |
15 20 * * * | A las 8:15 p.m. de cada día. |
00 5 * * 0 | A las 5 a.m. todos los domingos. |
* 5 * * Sun | Cada minuto de 5:00 a.m. a 5:59 a.m. todos los domingos. |
45 19 1 * * | A las 7:45 p.m. del primero de cada mes. |
01 * 20 7 * | Al minuto 1 de cada hora del 20 de julio. |
10 1 * 12 1 | A la 1:10 a.m. todos los lunes de diciembre. |
00 12 16 * Wen | Al mediodía de los días 16 de cada mes y que sea miércoles. |
30 9 20 7 4 | A las 9:30 a.m. del día 20 de julio y que sea jueves. |
30 9 20 7 * | A las 9:30 a.m. del día 20 de julio sin importar el día de la semana. |
20 * * * 6 | Al minuto 20 de cada hora de los sábados. |
20 * * 1 6 | Al minuto 20 de cada hora de los sábados de enero. |
Valores o listas/incrementos
Es posible especificar listas de valores o incrementos en los campos de crontab. Por ejemplo:
Crontab | Descripción |
---|---|
59 11 * 1-3 1,2,3,4,5 | A las 11:59 a.m. de lunes a viernes, de enero a marzo. |
45 * 10-25 * 6-7 | Al minuto 45 de todas las horas de los días 10 al 25 de todos los meses y que el día sea sábado o domingo. |
10,30,50 * * * 1,3,5 | En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y viernes. |
*/15 10-14 * * * | Cada quince minutos de las 10:00 a.m. a las 2:00 p.m. |
* 12 1-10/2 2,8 * | Todos los minutos de las 12 del día, en los días 1, 3, 5, 7 y 9 de febrero a agosto. (El incremento en el tercer campo es de 2 y comienza a partir del 1). |
0 */5 1-10,15,20-23 * 3 | Cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de cada mes y que el día sea miércoles. |
3/3 2/4 2 2 2 | Cada 3 minutos empezando por el minuto 3 (3, 6, 9, etc.) de las horas 2, 6, 10, etc. (cada 4 horas empezando en la hora 2) del día 2 de febrero y que sea martes. |
Ejemplo completo
El siguiente ejemplo muestra cómo ejecutar el comando who
todos los lunes a las 10:30 y guardar la salida en el fichero quien.tex
:
30 10 * * 1 /usr/bin/who >> /home/quien.tex
Comandos de Crontab
Para administrar las tareas programadas con crontab, se utilizan los siguientes comandos:
crontab -e
: Edita el archivo crontab utilizando el editorvi
.crontab -l
: Muestra la lista de tareas programadas.crontab -r
: Elimina el archivo crontab.
Conclusión
Crontab es una herramienta poderosa para automatizar tareas en sistemas Linux. Su sintaxis flexible permite programar la ejecución de comandos en una amplia variedad de horarios y fechas. Con un poco de práctica, podrás dominar crontab y utilizarlo para optimizar la administración de tu sistema.