Programar tareas mediante Crontab

Generalidades

El comando crontab que se encuentra en los sistemas operativos Unix se usa para programar comandos que se ejecutan periodicamente.

En general crontab usan un «daemon«, crond que se ejecuta constantemente en segundo plano y comprueba una vez por minuto para ver si es necesario ejecutar alguno de los trabajos programados. Estos trabajos generalmente se denominan «trabajos cron». Los trabajos de Cron se ejecutan como el usuario que los crea, como si ese usuario escribiera el comando en la terminal.

¿Qué es crontab?

Por simple que parezca, se trata de un archivo de texto, aunque en verdad se trata de un archivo con contenido especial. Posee una lista con todos los scripts a ejecutar. Generalmente cada usuario del sistema posee su propio fichero Crontab. Se considera que el ubicado en la carpeta /etc pertenece al usuario root.

Para generar el archivo propio, cada usuario deberá hacer uso del comando crontab.

Estructura de crontab

Se compone de 5 asteriscos, usuario y el comando a ejecutar. Cada uno de los asteriscos significa:

  • m: minuto
  • h: hora
  • d: día del mes
  • m: mes
  • d: día de la semana
  • u: username
  • c: comando a ser ejecutado.

La sintaxis de este archivo es intuitiva, cada tarea se añade mediante una nueva línea e incluye siete parámetros, como se describe anteriormente.

Si un usuario cualquiera, incluido el root, ejecuta crontab -e abrirá su crontab personal.

En el caso de crontab personal, se requieren seis parámetros, pues el nombre de usuario quedará implícito.

Agregar tareas a crontab personal

Para ejemplificar lo anterior, crea un nuevo archivo llamado archivo.txt en el directorio Documentos y agrega una línea de texto

$ nano Documentos/archivo.txt

Archivo de ejemplo

Verifica las tareas en el crontab personal

$ crontab -l

Abre el crontab personal

$ crontab -e

Esto abre el crontab personal (generando un archivo nuevo), mediante el editor de textos vim; deberás editar el archivo para escribir lo siguiente:

0,2,4,6,8,10 * * * * echo "Hola mundo! - Crontab personal" >> /home/dev/Documentos/archivo.txt

Lo que acabamos de indicarle es que a los minutos 0, 2, 4, 6, 8 y 10 de todas las horas, escriba un texto «Hola mundo! – Crontab personal» en el archivo de texto que creamos antes.

Si al momento de guardar la tarea tienes un error, se te mostrara un mensaje en consola

Deberemos realizar las correcciones adecuadas y al guardar, se generará un mensaje indicando que se está instalando una nueva tarea.

Si ahora verificamos nuevamente la lista de tareas del crontab personal, podemos hacerlo con:

$ crontab -l

Veremos la linea que acabamos de escribir

Después de un momento de tener el crontab en ejecución, podremos abrir el archivo que creamos al inicio:

$ nano Documentos/archivo.txt

En el ejemplo anterior agregamos los minutos de forma explícita, otra forma de hacerlo es simplificarlo, en el siguiente ejemplo la tarea ocurriría cada cinco minutos de todas las horas

*/5 * * * * echo "Hola mundo! - Crontab simplificado" >> /home/dev/Documentos/archivo.txt

Otros ejemplos

Todos los días a las 7 de la tarde

0 19 * * * Tarea_a_ejecutar

Todos los domingos a las 7 de la tarde

0 19 * * 0 Tarea_a_ejecutar

Todos los 4 de febrero a las 7 de la tarde

0 19 4 2 * Tarea_a_ejecutar

Todos los viernes a las 2:30 horas

30 2 * * 1 Tarea_a_ejecutar

De lunes a viernes a las 2:30

30 2 * * 1-5 Tarea_a_ejecutar

De lunes a viernes cada 10 minutos desde las 2:00 horas durante una hora

*/10 2 * * 1-5 Tarea_a_ejecutar

Agregar tareas a crontab como root

Abre el archivo /etc/crontab y agrega la siguiente instrucción para agregar una tarea como usuario root

*/6 19 * * * root echo "Crontab root!" >> /home/dev/Documentos/archivo.txt

Si revisamos nuevamente el archivo archivo.txt veremos que se ha actualizado con el texto adecuado:

$ sudo nano /home/dev/Documentos/archivo.txt

Referencias externas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *