Cron job: ¿Qué es?
CategoriasLinux

Cron Jobs

Cron Jobs: qué son, para qué sirven y cómo se crean

Introducción

En algún momento de nuestra vida como desarrolladores y/o programadores web, llega un momento en que por h o por b, necesitamos ejecutar tareas automáticamente: limpieza de algunos registros, envío de correos, generación de copias de seguridad, sincronización de datos o simplemente ejecución de scripts… para lo que sea.

Para automatizar este tipo de procesos, los sistemas Unix y Linux incorporan un componente/servicio esencial llamado cron, conocido mejor como: cron job.

En este artículo, una vez veamos qué son, aprenderemos a crearlos y a configurarlos. Y si, también los podemos usar en hosting compartidos, como por ejemplo Hostinger 😎

¡Un momento! ¿Pero qué pasa con Windows? En Windows no existe. Aunque se puede decir que tiene un equivalente llamado programador de tareas.

Volviendo a cron…

¿Qué es un Cron Job?

Podemos decir que un cron job es una tarea programada que se ejecuta automáticamente en el servidor a intervalos definidos por el usuario.
Como dijimos al principio, cron es un servicio que está disponible en los sistemas Unix/Linux y es responsable de ejecutar órdenes en momentos determinados.

Con “órdenes” nos referimos a la posibilidad de ejecutar tanto scripts (PHP, Python, MySQL, etc.) como comandos del sistema operativo o programas externos.

La principal ventaja de cron, es que no requiere intervención humana, es decir, una vez configurado, se ejecuta solo.

Sintaxis de un cron job

Antes de ver como creamos un cron job, debemos saber cómo se estructura.

Como hemos dicho antes, un cron job se encarga de ejecutar órdenes, por tanto, lo único que debemos hacer es especificar qué queremos que se ejecute y cuando.

Para ello, cron dispone de una sintaxis la cual es la siguiente:

* * * * *  + comando o script a ejecutar

Tranquil@ es sencillo 😉

  • El primer asterisco siempre hace referencia a los minutos (0-59)
  • El segundo a la hora (0-23)
  • El tercero al día del mes (1-31)
  • El cuarto asterisco *, hace referencia al mes (1-12) o también en inglés jan, feb, mar…
  • El quinto se refiere al dia de la semana (0-6) siendo 0 lunes y 6 domingo. Aunque también se puede escribir en inglés: sun,mon,tue, etc.

Si dejamos el asterisco (*) tal cual, estaremos permitiendo todos los valores posibles para ese campo.

¿No te ha quedado claro? Espera, te muestro una imagen:

Explicación sintaxis cron job

¿Mejor? 😜

Ahora, supongamos que queremos ejecutar un script PHP y queremos que se ejecute cada día a las 02:00 horas.

Pues es tan fácil como escribir:

0 2 * * * php /ruta/script.php

Como vemos, le indicamos los minutos y la hora, pero al dejar los asteriscos, le estamos diciendo que ejecute el script cada día del mes, cada mes y cada día de la semana.

¡Un momento!

Pero y si queremos que el script, orden, programa… o lo que sea, ¿se ejecute cada 15 minutos?

¡Fácil!

Primero tenemos que saber que, para especificar dos o más valores en cada variable, debemos separarlas por comas. O sea, que si queremos ejecutar un script cada 15 minutos hacemos:

0,15,30,45 * * * * php /ruta/script.php

Y el script se ejecutará en los minutos 00, 15, 30 y 45.

Ahora bien, podríamos pensar en hacer esto otro:

0,15 * * * * php /ruta/script.php

Pero no sería correcto, ya que el script en ese caso se ejecutaría en el minuto 00 y en el minuto 15 de cada hora. ¡Es importante tener en cuenta esto! Por cierto, una alternativa más elegante es hacerlo de esta otra manera:

*/15 * * * * php /ruta/script.php

Esto sí que ejecuta el script cada 15 minutos.

Uso de cron job

Hasta ahora hemos visto la sintaxis de cron y las posibilidades que ofrece, pero seguro que te preguntas: ¿cómo se utiliza realmente?

Es decir, ¿necesitamos ejecutar algún comando específico o basta con escribir directamente en la terminal algo como 0 2 * * * php /ruta/script.php?

Pues bien, debemos de saber que la expresión cron no es un comando que se pueda ejecutar en la terminal como tal, sino una instrucción que debe registrarse para que el sistema la interprete y la ejecute automáticamente en el momento indicado.

Recuerda: “La orden se registra en el sistema y cron lo ejecuta automáticamente cuando llega la hora.”

Así que lo que hacemos es escribir en la terminal crontab -e y se nos abrirá un editor con el archivo de cron del usuario. Es ahí donde ponemos las ordenes que queramos ejecutar (una en cada línea).

Por ejemplo:

0 2 * * * php /ruta/script.php
*/15 * * * * php /ruta/script-A.php
...
Etc.

Una vez guardado, ya se encargará cron de ejecutarlo.

Algunos comandos útiles son:

  • crontab -l: Lista los cron jobs del usuario
  • crontab -e: Edita el crontab del usuario y también se usa para añadir nuevas tareas/ordenes.
  • crontab -r: Elimina todos los cron Jobs
  • crontab -i -r: Elimina cron jobs con confirmación
  • crontab -u usuario -l: Lista cron de otro usuario (root)

Bueno, creo que es bastante sencillo ¿no? Pruébalo y me dices 😉

Cron jobs en hosting compartido

Si tenemos un VPS o servidor contratado no hay ningún problema, pero si nos alojamos en un hosting compartido debemos saber que no todos permiten ejecutar el servicio cron. No es el caso de Hostinger, el cual no solo nos permite usar cron, sino hacerlo de una forma rápida y sencilla.

Hostinger ofrece una interfaz muy sencilla para programar cron jobs, y es ideal para usuarios que no quieren editar crontabs manualmente.

Dicho esto, veamos ahora cómo configurar un cron job en Hostinger.

Y si utilizas un proveedor de hosting diferente, conviene aclarar dos puntos importantes:

Primero, no debes preocuparte. Si tu hosting compartido permite el uso de cron jobs, el proceso será muy similar al que veremos a continuación.

Segundo, si aún no utilizas Hostinger ¿A qué esperas? Quizá sea buen momento para planteártelo 🙂

Crear un cron job en Hostinger

Estando en el panel (hPanel) de Hostinger nos dirigimos a: «Sitio web -> Panel de nuestro sitio -> Avanzado -> Cron Jobs.»

Cron jobs Hostinger

Hostinger ofrece una interfaz visual donde tú eliges:

  • Frecuencia (cada 5 min, cada hora, diario, etc.)
  • Comando a ejecutar

En un hosting compartido, el comando típico para PHP es: «ruta binario php + ruta script php»

Por ejemplo:

/usr/bin/php /home/usuario/public_html/scripts/limpieza.php

O con la ruta absoluta que Hostinger indique en tu panel (cada servidor la personaliza).

Cron jobs Hostinger

Como vemos nos incluye ya la ruta del binario de PHP + la ruta de nuestro usuario. O sea que solo tendríamos que poner la ruta del script y establecer una frecuencia.

Por cierto, los ejemplos los estamos viendo simulando un script PHP, pero recuerda que puede ser cualquier otra cosa.

Conclusión

Los cron jobs son una herramienta esencial para automatizar procesos dentro de cualquier proyecto web, pero también fuera de la web, es decir, en nuestro ordenador mismo podemos usarlos para ejecutar tareas de mantenimiento o limpieza sin intervención manual.

Y, por otro lado, está bien saber que Hostinger ofrece un entorno muy accesible para crear cron jobs incluso en planes compartidos, lo que lo convierte en una solución efectiva para automatizar scripts PHP o cualquier tarea repetitiva.

Espero que este post/articulo te haya gustado, te sirva de ayuda y, cualquier duda o aporte ya sabes, me lo puedes hacer saber en comentarios o por cualquier otro medio disponible 😉

Sobre el autor

Comparte:

Este artículo está publicado bajo una licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional . Puedes compartirlo y adaptarlo, incluso con fines comerciales, siempre que cites al autor y mantengas esta misma licencia.

Deja una respuesta

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

Información básica sobre protección de datos
Responsable Óscar Martínez +info...
Finalidad Gestionar y moderar los comentarios +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios No se cederán datos a terceros, salvo obligación legal +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.