This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

Cómo configurar e instalar Laravel Cron Job para la automatización

Updated on julio 10, 2025

13 Min Read

Al gestionar sitios web o aplicaciones, algunas tareas deben ejecutarse con regularidad, como enviar correos electrónicos, limpiar bases de datos o generar informes. Sin automatización, estas tareas tendrían que hacerse manualmente, lo que puede consumir un tiempo valioso.

Ahí es donde entran los trabajos Cron.

Cron es una herramienta de los sistemas Unix/Linux que automatiza tareas, ejecutándolas según una programación establecida, como cada hora, cada día o cada semana.

Laravel facilita aún más este proceso ofreciendo su propio sistema de programación integrado para tareas Cron. En lugar de escribir complejas expresiones Cron a mano, Laravel te permite gestionar las tareas programadas a través de código simple, haciéndolo más rápido y eficiente.

En esta guía, te mostraré un ejemplo práctico de cómo configurar un comando personalizado de Artisan y programarlo para que se ejecute a intervalos específicos, garantizando que tus tareas recurrentes se gestionen sin esfuerzo.

¿Cómo funciona Cronjob?

Como he mencionado antes, una tarea Cron es una forma de ejecutar comandos automáticamente a horas determinadas.

Para programar una tarea, utilizas un archivo llamado crontab. Este archivo contiene una lista de comandos y cuándo ejecutarlos. Cada línea tiene dos partes: la configuración horaria y el comando a ejecutar.

El formato es el siguiente:

* * * * * command_to_run

Esto es lo que significa cada estrella:

  • Primero: minuto (0-59)
  • Segundo: hora (0-23)
  • Tercero: día del mes (1-31)
  • Cuarto: mes (1-12)
  • Quinto: día de la semana (0-6, donde domingo es 0)

Si quieres ejecutar un comando todos los días a las 3 de la mañana, escribirías

0 3 * * * command_to_run

En Laravel, normalmente creas un comando personalizado y defines su crontab dentro de tu proyecto. Entonces sólo necesitas una línea en el crontab de tu servidor:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Esto indica a Laravel que compruebe cada minuto si hay algo programado para ejecutarse, y se encarga de todo lo demás desde dentro de la aplicación.

¿Tienes problemas con la configuración del servidor, los Cron Jobs y el rendimiento?

Cloudways se encarga de gestionar los servidores por ti para que puedas centrarte en crear grandes aplicaciones y mantener contentos a tus clientes.

Programación de trabajos Laravel Cron

Laravel facilita la programación de tareas. Su Programador de Comandos integrado te permite definir cuándo deben ejecutarse comandos específicos, directamente dentro de tu proyecto Laravel.

Para utilizarlo, sólo tienes que añadir una única entrada Cron a tu servidor. Una vez hecho esto, define tu programa de tareas en el método schedule dentro de app/Console/Kernel.php.

Veamos un ejemplo rápido. Supongamos que quieres crear un comando personalizado de Artisan que envíe un informe por correo electrónico a todos los usuarios cada hora. Así es como lo configurarías.

¿Cómo crear un Cron Job en Laravel?

Voy a suponer que ya tienes una aplicación Laravel configurada. Si es así, no dudes en saltar a la sección en la que crearemos un comando Artisan personalizado y lo programaremos.

Si no es así, no te preocupes, puedes seguir adelante configurando primero una aplicación Laravel nueva.

Instalación de la aplicación Laravel

Para este tutorial, utilizaré la plataforma Cloudways porque ofrece una instalación de Laravel en 1 clic, lo que hace que la configuración sea rápida y sin complicaciones.

  • Para empezar regístrate una cuenta gratuita de Cloudways e inicia sesión.

regístrate gratis en Cloudways

  • A continuación, crea un nuevo servidor y elige Laravel como tipo de aplicación. Introduce los datos del servidor y de la aplicación, pulsa «Iniciar ahora» y ya está.
Nota 💡: Cuando lanzas una aplicación Laravel en Cloudways, viene con Laravel 10.11.0 por defecto. Esto se debe a que es una versión estable que ha sido probada y soportada oficialmente en el stack de Cloudways. Sin embargo, si prefieres utilizar la última versión de Laravel (actualmente la versión 12.10.0), tendrás que instalarla manualmente a través de SSH utilizando Compositor. Asegúrate de que tu servidor ejecuta PHP 8.2 o superior, ya que Laravel 12 lo requiere.

Opcional: Actualizar a la última versión 12x de Laravel

  • Una vez que tu servidor esté listo, ve a la pestaña Servidores del panel de control de Cloudways.
  • Selecciona el servidor que acabas de crear.

Selecciona el servidor que acabas de crear

  • Ahora dirígete a Configuración y Paquetes, y luego a Paquetes.
  • En mi caso, es PHP 8.2, así que lo dejaré como está.

dirígete a Ajustes y Paquetes, luego a Paquetes

  • Ahora que hemos actualizado la versión de PHP, podemos instalar Laravel 12. Para ello, tendrás que abrir el terminal SSH y ejecutar el comando Composer para iniciar el proceso de instalación de Laravel 12 en el servidor.
  • Dirígete a Credenciales Maestras. Aquí es donde encontrarás los detalles de acceso SFTP y SSH para todas las aplicaciones.

Dirígete a Credenciales Maestras. Aquí es donde encontrarás los detalles de acceso SFTP y SSH para todas las aplicaciones

  • Pulsa el botón Iniciar Terminal SSH.
  • Ahora inicia sesión utilizando tu nombre de usuario y contraseña. Puedes encontrarla en la pestaña Credenciales Maestras.

Inicia el botón Terminal SSH. Inicia sesión utilizando tu nombre de usuario y contraseña. Puedes encontrarla en la pestaña Credenciales Maestras

  • Una vez conectado, navega hasta la carpeta de tu aplicación: cd /home/master/applications/your-app-id/private_html. Puedes obtener el ID de tu aplicación en el panel de control de Cloudways, en la pestaña Detalles de acceso.

Puedes obtener tu ID de aplicación desde tu panel de control de Cloudways en la pestaña Detalles de acceso

Nota 💡: Estamos navegando a /home/master/applications/your-app-id/private_html porque cuando lanzas un servidor en Cloudways con una aplicación Laravel, instala Laravel por defecto en el directorio public_html. Así que para instalar Laravel 12, tenemos que hacerlo dentro de private_html. De esta forma, evitamos interferir con la aplicación existente y podemos instalar Laravel 12 en paralelo de forma segura. Esto no sustituirá a la instalación por defecto de Laravel 10. Pero si más adelante decides sustituir la antigua app Laravel 10 por tu nueva instalación Laravel 12, puedes hacerlo apuntando la carpeta public_html al directorio /public de tu app Laravel 12. Por ahora, mantendremos ambas versiones funcionando una al lado de la otra: Laravel 10 para el frontend, y Laravel 12 para los scripts o pruebas del backend.
  • Una vez logueado, dentro de private_html, ejecuta: composer create-project laravel/laravel:^12 my-new-laravel-app. Puedes sustituir mi-nueva-laravel-app por el nombre que quieras para la nueva carpeta de aplicaciones.

Una vez logueado, dentro de html privado, ejecuta composer para crear una nueva app laravel 12

  • Para verificar tu instalación de Laravel 12, dirígete al nuevo directorio de Laravel que has creado: cd mi-nuevo-laravel-app.
  • Ejecuta el siguiente comando en el directorio de tu proyecto Laravel para asegurarte de que estás ejecutando Laravel 12: php artisan –version

Ejecuta el siguiente comando en el directorio de tu proyecto Laravel para asegurarte de que estás ejecutando Laravel 12 php artisan --version

Ya está. La salida muestra que se ha configurado la aplicación Laravel 12 y se han instalado los paquetes necesarios.

Configurar el Cron Job de Laravel

Para configurar una tarea cron de Laravel, el primer paso es crear un comando Artisan personalizado. Artisan es la herramienta de línea de comandos integrada en Laravel que ayuda a automatizar tareas comunes.

Para este tutorial, crearemos un comando llamado ActualizaciónHora que luego podrás programar para que se ejecute automáticamente.

1. Crea un comando artesano personalizado

Empieza navegando por el directorio del proyecto Laravel 12. Si has seguido los pasos anteriores, mi aplicación Laravel 12 se encuentra en:

cd /home/master/applications/ufgwymvjfb/private_html/my-new-laravel-app

Una vez dentro de la carpeta de tu proyecto Laravel, ejecuta este comando:

php artisan make:command HourlyUpdate

Esto generará un nuevo archivo en app/Console/Commands/HourlyUpdate.php. Aquí es donde definirás la lógica para cualquier tarea que quieras automatizar.

crea tu comando personalizado Artisan HourlyUpdate.php

Acabas de crear tu comando personalizado Artisan HourlyUpdate.php.

2. Edita el archivo de comandos

Ahora que has creado tu comando ActualizaciónHora, es hora de definir lo que hace realmente.

Abre el archivo del comando en un editor de terminal (como nano). Ejecuta este comando en la misma ventana SSH donde antes creamos el comando Artisan:

nano app/Console/Commands/HourlyUpdate.php

Ahora, deberías ver el editor nano. Dentro de este archivo, verás un par de líneas de marcador de posición que necesitan actualizarse.

actualizar los marcadores de posición en el editor nano

Sustituye todo lo que hay dentro por esta estructura de comandos de ejemplo (puedes modificar la lógica dentro de handle() en función de lo que quieras que haga el comando):

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class HourlyUpdate extends Command

{

protected $signature = 'hourly:update';

protected $description = 'Run tasks that need to execute every hour';

public function __construct()

{

parent::__construct();

}

public function handle()

{

// Your logic here

\Log::info("HourlyUpdate command ran at " . now());

$this->info('Hourly update command executed.');

}

}

Cuando hayas terminado de añadir el código:

  • Pulsa Ctrl + O (luego pulsa Intro para confirmar el guardado)

Pulsa Ctrl + O (luego pulsa Intro para confirmar el guardado)

  • Luego Ctrl + X para salir

3. Registra el comando

Para que Laravel reconozca y utilice tu nuevo comando, tienes que registrarlo en el archivo Kernel.php.

Abre el archivo app/Consola/Kernel.php:

nano app/Console/Kernel.php

En mi caso, el archivo app/Console/Kernel.php está vacío, lo que no es típico de un proyecto Laravel.

Archivo appConsoleKernel.php

Normalmente, este archivo contiene la estructura necesaria para definir y programar comandos, incluyendo el método programar y la matriz $comandos.

No te preocupes, vamos a recrear las partes esenciales de este archivo.

Este es el aspecto que debería tener el archivo básico Kernel.php:

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;

use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel

{

/**

* The Artisan commands provided by your application.

*

* @var array

*/

protected $commands = [

// Register the new command here

Commands\HourlyUpdate::class,

];

/**

* Define the application's command schedule.

*

* @param \Illuminate\Console\Scheduling\Schedule $schedule

* @return void

*/

protected function schedule(Schedule $schedule)

{

// Schedule the hourly command to run every hour

$schedule->command('hourly:update')->hourly();

}

/**

* Register the commands for the application.

*

* @return void

*/

protected function commands()

{

$this->load(__DIR__.'/Commands');

require base_path('routes/console.php');

}

}

qué aspecto debería tener el archivo básico Kernel.php

  • Pega el código anterior en el archivo y, como antes, pulsa Ctrl + O para guardar el archivo.
  • A continuación, pulsa Intro para confirmar el nombre del archivo.
  • Sal del editor pulsando Ctrl + X.

¿Qué ocurre aquí?

Antes hemos creado un comando personalizado llamado ActualizarHora. Podríamos haberlo llamado como quisiéramos, por ejemplo, EnviarNewsletter, LimpiarArchivosTemporales o ActualizarEstadísticas : lo que tenga sentido para tu tarea.

Ahora, en la clase App\Console\Kernel, le estamos diciendo a Laravel dos cosas:

1. Registra el comando

protected $commands = [

Commands\HourlyUpdate::class,

];

Esto permite a Laravel conocer nuestro comando personalizado para que pueda ejecutarlo cuando se programe.

2. Programa cuándo debe ejecutarse

$schedule->command('hourly:update')->hourly();

Esto programa el comando para que se ejecute una vez cada hora utilizando el método ->hourly() de Laravel.

Aunque ->hourly() es perfecto para este ejemplo, Laravel te ofrece una variedad de métodos de programación para ajustarse a diferentes necesidades de tiempo. Aquí tienes una referencia rápida:

Método Descripción
->cron(‘* * * * *’) Ejecuta la tarea en una programación Cron personalizada
->cadaMinuto() Ejecuta la tarea cada minuto
->cadaCincoMinutos() Ejecuta la tarea cada cinco minutos
->cadaDiezMinutos() Ejecuta la tarea cada diez minutos
->cadaTreintaMinutos() Ejecuta la tarea cada treinta minutos
->cadahora() Ejecuta la tarea cada hora
->hourlyAt(17) Ejecuta la tarea cada hora a los 17 minutos
->diariamente() Ejecuta la tarea todos los días a medianoche
->diariamenteA las(’13:00′) Ejecuta la tarea todos los días a las 13:00
->dosVecesAlDía(1, 13) Ejecuta la tarea diariamente a la 1:00 AM y a la 1:00 PM
->semanal() Ejecuta la tarea cada semana
->mensual() Ejecuta la tarea cada mes
->mensualOn(4, ’15:00′) Ejecuta la tarea el día 4 de cada mes a las 15:00
->trimestral() Ejecuta la tarea cada trimestre
->anualmente() Ejecuta la tarea cada año
->zona_horaria(‘America/Nueva_York’) Establece la zona horaria de la programación

Después de esto, prueba el comando personalizado utilizando:

php artisan cada hora:actualizar

Éxito:

php artisan hourlyupdate comando funcionando

Ahora que se está ejecutando correctamente, el siguiente paso es asegurarse de que está programado para ejecutarse automáticamente cada hora mediante el programador de tareas de Laravel.

4. Configura el Programador de Laravel en Cron

Ahora es el momento de añadir una tarea cron a tu servidor para que ejecute el programador de Laravel cada minuto. Esto permitirá a Laravel comprobar si es necesario ejecutar alguna tarea programada (como tu comando horario).

Edita el archivo Crontab:

Abre el editor crontab ejecutando

crontab -e

Añade el comando Programador:

Al final del archivo crontab, añade la siguiente línea:

* * * * * php /home/master/applications/ufgwymvjfb/private_html/my-new-laravel-app/artisan schedule:run >> /dev/null 2>&1

Al final del archivo crontab, añade el comando Programador

Esto le dirá a cron que ejecute el programador de Laravel cada minuto. Laravel comprobará entonces si es hora de ejecutar algún comando programado.

Guardar y Salir:

Después de añadir esta línea, guarda y sal del editor crontab:

Como estamos usando nano, pulsa Ctrl + O para guardar, y luego Ctrl + X para salir.

5. Confirma que tu Cron Job funciona

Ahora, tu comando HourlyUpdate debería ejecutarse automáticamente cada hora, ya que está programado a través del planificador de Laravel.

Para confirmar que la tarea cron funciona, puedes ver las tareas cron activas ejecutando el siguiente comando:

crontab -l

puedes ver tus trabajos cron activos ejecutando el siguiente comando crontab -l

Esto listará todas las tareas cron para el usuario actual. Deberías ver la entrada que has añadido: * * * * * php /home/master/applications/ufgwymvjfb/private_html/my-new-laravel-app/artisan schedule:run >> /dev/null 2>&1

En nuestro caso, podemos verlo en la captura de pantalla anterior, así que es un éxito.

Para estar más seguro, puedes ejecutar tu tarea cron manualmente con el siguiente comando (esto omitirá el programador de tareas cron y ejecutará el comando directamente):

Si se ejecuta correctamente y muestra«Comando de actualización horaria ejecutado«, sabrás que el comando funciona y está listo para programarse.

Y como puedes ver, funciona:

ejecuta tu tarea cron manualmente

¿Cómo facilita Cloudways la creación de Cron Jobs en Laravel?

Antes hemos visto cómo configurar una tarea cron de Lar avel manualmente mediante SSH: creando el comando HourlyUpdate, registrándolo, programándolo en Laravel y configurando el crontab de todo el sistema.

Ese enfoque funciona, y es sólido si te sientes cómodo utilizando la línea de comandos. Pero si tu aplicación está alojada en Cloudways, en realidad hay una forma mucho más sencilla de manejarlo, sin necesidad de tocar el terminal ni de editar manualmente los archivos del servidor.

A continuación te explicamos cómo puedes hacer lo mismo -ejecutar php artisan schedule:run cada minuto- a través de la plataforma Cloudways:

Configuración del Programador de Laravel en Cloudways

  • Ve a tu cuenta de Cloudways y abre la aplicación en la que quieras trabajar.

Ve a tu cuenta Cloudways y abre la aplicación en la que quieres trabajar

  • En el menú de la izquierda, haz clic en Gestión de Trabajos Cron.

haz clic en Gestión de Cron Job

  • Cambia a la pestaña Avanzado – esto te da un control total sobre el formato del comando.

Cambia a la pestaña Avanzado

  • Introduce el siguiente comando, sustituyendo tu_nombre_de_carpeta_de_proyecto por la carpeta real de tu aplicación: * * * * php /home/master/aplicaciones/nombre_de_tu_carpeta_de_proyecto/public_html/artisan schedule:run >> /dev/null 2>&1
  • Añadiré este comando en mi caso: * * * * * php /home/master/applications/ufgwymvjfb/private_html/my-new-laravel-app/artisan schedule:run >> /dev/null 2>&1

añade tu código de cron job

  • Esto indica al servidor que compruebe cada minuto si Laravel tiene algo programado para ejecutarse, incluido el comando de actualización horaria que configuramos antes.
  • Pulsa «Guardar cambios» y el programador empezará a buscar tareas automáticamente.

En comparación con la configuración manual, Cloudways se encarga de la mayor parte de la configuración en segundo plano por ti. Sigues escribiendo y programando tus comandos Laravel de la misma forma, pero ejecutarlos regularmente es sólo cuestión de rellenar un campo y hacer clic en guardar.

Programación de Cron Job sin esfuerzo con Cloudways Laravel Hosting

Automatiza tus tareas Laravel con unos pocos clics, sin dolores de cabeza de servidor ni configuraciones complejas. Cloudways hace que la ejecución de tareas programadas sea más rápida, sencilla y sin preocupaciones.

Conclusión

Tanto si te sientes cómodo trabajando desde la línea de comandos como si prefieres la sencillez de un panel de control visual como el que ofrece Cloudways, configurar las tareas cron de Laravel no tiene por qué ser complicado.

En esta guía, te he guiado a través de la ruta manual: creando un comando Artisan personalizado, registrándolo en el Kernel y configurando una tarea cron a nivel de sistema para activar el programador de Laravel cada minuto.

A continuación, te mostré cómo se puede realizar la misma tarea más fácilmente en Cloudways, utilizando el Gestor de Tareas Cron para conseguir el mismo resultado con mucho menos esfuerzo.

Ambos métodos funcionan, pero si prefieres evitar posibles errores, el método Cloudways es sin duda la apuesta más segura.

P) ¿Cómo programo una tarea cron en Laravel?

Para programar una tarea cron en Laravel, primero abre tu terminal y navega a la raíz de tu proyecto. Edita el archivo crontab utilizando crontab -e, y añade la siguiente línea:

Deja que Cloudways se encargue del trabajo pesado con la gestión automatizada del servidor, el alojamiento optimizado de Laravel y la programación sencilla de tareas cron.

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

A continuación, define tus tareas programadas en app/Console/Kernel.php en el método programar:

protected function schedule(Schedule $schedule) {

$schedule->command('my:command')->everyMinute();

}

Guarda los cambios en el crontab, y tu tarea cron se ejecutará ahora automáticamente en el intervalo definido.

P) ¿Para qué sirven los cron jobs en Laravel?

Las tareas Cron automatizan tareas recurrentes como la limpieza de la base de datos, el envío de notificaciones o la ejecución de comandos programados a intervalos especificados, sin necesidad de intervención manual.

P) ¿Puedo programar múltiples cron jobs en Laravel?

Sí, puedes definir múltiples tareas programadas en app/Console/Kernel.php, cada una con frecuencias de ejecución diferentes utilizando el programador de Laravel. Cada tarea se puede programar de forma independiente.

P) ¿Cuál es la diferencia entre una cola y un cron job en Laravel?

Los Cron jobs se utilizan para ejecutar tareas a horas programadas, como los informes nocturnos o la limpieza de datos. Las colas, por otro lado, gestionan tareas de larga duración de forma asíncrona, permitiendo a tu aplicación procesar trabajos en segundo plano sin ralentizar las peticiones de los usuarios.

P) ¿Cómo puedo ejecutar automáticamente el programador de Laravel?

Para ejecutar el programador de Laravel automáticamente, configura una tarea cron con crontab -e y añade:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Este cron job ejecuta el planificador de Laravel cada minuto, ejecutando cualquier tarea programada que se haya definido en app/Console/Kernel.php.

P) ¿Cómo programo una tarea cron cada 5 minutos en Laravel?

Para programar una tarea cron cada 5 minutos, edita tu crontab con crontab -e y añade lo siguiente:

*/5 * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Esto garantiza que tu tarea cron se ejecute cada 5 minutos.

P) ¿Cómo puedo comprobar si se está ejecutando una tarea cron de Laravel?

Puedes comprobar si el servicio cron se está ejecutando utilizando el siguiente comando:

ps aux | grep cron

Para activar manualmente el programador de Laravel y confirmar que tu cron job se está ejecutando correctamente, ejecuta el siguiente comando en la raíz de tu proyecto:

php artisan schedule:run

Esto ejecutará inmediatamente cualquier tarea programada en app/Console/Kernel.php.

Share your opinion in the comment section. COMMENT NOW

Share This Article

Abdul Rehman

Abdul es un experto en tecnología, aficionado al café y al marketing creativo al que le encanta estar al día de las últimas actualizaciones de software y aparatos tecnológicos. También es un hábil escritor técnico capaz de explicar conceptos complejos de forma sencilla para un público amplio. Abdul disfruta compartiendo sus conocimientos sobre el sector de la Nube a través de manuales de usuario, documentación y entradas de blog.

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

¿Quieres experimentar la plataforma Cloudways en todo su esplendor?

Realice una visita guiada GRATUITA de Cloudways y compruebe usted mismo lo fácil que es administrar su servidor y sus aplicaciones en la plataforma de alojamiento en la nube líder.

Iniciar mi recorrido