cronjobs-en-linux

Ocasionalmente llega el momento en que necesitamos ejecutar tareas de forma repetitiva en nuestros servidores, como pueden ser tareas de mantenimiento, respaldo de información, ejecución de funciones dentro de las aplicaciones, entre otras.

Las tareas de respaldo (backup) es una de las más comunes, y el mejor ejemplo, son las bases de datos; una empresa puede hacer un backup de la base de datos a su servidor de respaldos el día Viernes de cada semana a las 6 pm, una hora antes de que el personal termine de trabajar. Otro ejemplo podrían ser los proyectos, que se respaldan a las 2 am cada 15 dias.

¿Y cómo voy a hacer un respaldo de toda la información a las 3 de la mañana? ¡Es mucha información!

Es aquí donde nos conviene el uso de cronjobs.

¿Qué es cron?

Cron es el planificador de tareas basado en el tiempo, que nos permite configurar tareas para ejecutarlas en tiempos determinados. Esta utilidad de los sistemas Linux, nos permitirá ejecutar tareas de forma automatizada, sin que el administrador del servidor intervenga. La información de cron puede ser leída aquí.

Los cronjobs son las tareas que configuramos para que cron las ejecute.

¿Cómo crear un cronjob?

Para este ejemplo, utilizaremos una máquina virtual de Ubuntu.

Máquina Virtual

Podemos ver toda la documentación sobre cron que Linux provee con el comando:

man cron

Cron description

Para agregar un cronjob a la lista de tareas a ejecutar, se utiliza el comando:

crontab -e

crontab

Esto nos mostrará el archivo donde podemos agregar nuestros conjobs, uno por linea.

Para crear un cronjob se utiliza la estructura:

[Minute] [Hour] [Day] [Month] [Day of week (0 =sunday to 6 =saturday)] [Command]

Por ejemplo, digamos que queremos ejecutar todos los viernes a las 6:10 pm un script, el comando será el siguiente:

10 18 * * 5 /path/to/command

Los asteriscos nos indican que no importa el día ni el mes, por lo tanto solo se ejecutará el día de la semana 5 (que es viernes) a las 18:10 horas, que son las 6:10 pm.

Supongamos que queremos ejecutar un script cada 20 minutos:

*/20 * * * * /path/to/command

El script de ejecutara cada 20 minutos, todos los dias hasta que el comando sea borrado.

Crearemos un archivo llamado example.php y un cronjob posteriormente para ejecutar dicho archivo. El contenido no es importante ahora ya que ustedes lo usarán según sus necesidades.

nano

Después ejecutamos

crontab -e

y agregamos nuestro cronjob. Lo ejecutaremos los viernes a las 6:10 pm.

cronjob editado

10 18 * * 5 /usr/bin/php /home/user/example.php

Guardamos y para estar seguros que se ejecute, reiniciaremos el servicio cron.

sudo service cron restart

En caso de que necesitemos ejecutar un script más grande, podemos crear un archivo shell y hacer que lo ejecute cron:

script.sh

Luego de ejecutar el comando anterior veremos el siguiente archivo

more scripts

De esta manera, cron llamará a script.sh, y de ahí se ejecutaran todos los comandos que necesitemos.

Como puedes ver, siguiendo estos sencillos pasos puedes configurar tus trabajos programados y ahorrarte mucho tiempo frente a la computadora. Espero que te haya gustado este tutorial y no olvides dejar tus comentarios más abajo.

Lecturas recomendadas

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.