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.

Como configurar e instalar o Laravel Cron Job para automação

Updated on October 3, 2025

13 Min Read

Ao gerir sítios Web ou aplicações, certas tarefas têm de ser executadas regularmente – como enviar e-mails, limpar bases de dados ou gerar relatórios. Sem a automatização, estas tarefas teriam de ser efectuadas manualmente, o que pode ocupar um tempo precioso.

É aí que entram os empregos Cron.

O Cron é uma ferramenta nos sistemas Unix/Linux que automatiza tarefas, executando-as num horário definido, como por exemplo, de hora a hora, diariamente ou semanalmente.

O Laravel torna este processo ainda mais fácil ao oferecer o seu próprio sistema de agendamento integrado para tarefas Cron. Em vez de escrever expressões Cron complexas à mão, o Laravel permite-te gerir tarefas agendadas através de código simples, tornando-o mais rápido e eficiente.

Neste guia, vou apresentar um exemplo prático de como configurar um comando Artisan personalizado e agendá-lo para ser executado em intervalos específicos, garantindo que as tuas tarefas recorrentes são tratadas sem esforço.

Como funciona o Cronjob?

Como mencionei anteriormente, um
trabalho Cron
é uma maneira de executar comandos automaticamente em horários definidos.

Para agendar uma tarefa, utiliza um ficheiro chamado crontab. Este ficheiro contém uma lista de comandos e quando os deves executar. Cada linha tem duas partes: as definições de hora e o comando a executar.

O formato é o seguinte:

* * * * * * command_to_run

Vê aqui o que significa cada estrela:

  • Primeiro: minuto (0-59)
  • Segundo: hora (0-23)
  • Terceiro: dia do mês (1-31)
  • Quarto: mês (1-12)
  • Quinto: dia da semana (0-6, em que o domingo é 0)

Se quiseres executar um comando todos os dias às 3:00 AM, escreves:

0 3 * * * * command_to_run

No Laravel, normalmente crias um comando personalizado e defines o seu horário dentro do teu projeto. Depois só precisas de uma linha no crontab do teu servidor:

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

Isto diz ao Laravel para verificar a cada minuto se há alguma coisa programada para ser executada, e trata de tudo o resto a partir de dentro da aplicação.

Estás a ter dificuldades com a configuração do servidor, tarefas Cron e problemas de desempenho?

A Cloudways trata da gestão de servidores por ti, para que te possas concentrar na criação de excelentes aplicações e em manter os teus clientes satisfeitos.

Agendamento de tarefas Cron em Laravel

O Laravel torna o agendamento de tarefas simples. O Command Scheduler incorporado permite-te definir quando comandos específicos devem ser executados – mesmo dentro do teu projeto Laravel.

Para o utilizar, só precisas de adicionar uma única entrada Cron ao teu servidor. Depois disso, define a tua agenda de tarefas no método schedule dentro de app/Console/Kernel.php.

Vamos ver um exemplo rápido. Imagina que queres criar um comando Artisan personalizado que envia um relatório por correio eletrónico a todos os utilizadores de hora a hora. Eis como podes configurar isso.

Como criar um Cron Job em Laravel?

Vou assumir que já tens uma aplicação Laravel configurada. Se for esse o caso, estás à vontade para passar à secção onde vamos criar um comando Artisan personalizado e agendá-lo.

Se não for o caso, não te preocupes – podes seguir em frente, configurando primeiro uma nova aplicação Laravel.

Instalar a aplicação Laravel

Para este tutorial, vou usar a plataforma Cloudways porque ela oferece uma instalação Laravel com um clique, o que torna a configuração rápida e sem complicações.

  • Para começares,
    inscreve-te
    para uma conta gratuita da Cloudways e faz login.

inscreve-te para uma conta Cloudways gratuita

  • Em seguida, cria um novo servidor e escolhe Laravel como o tipo de aplicação. Preenche os detalhes do servidor e da aplicação, carrega em “Launch Now” e está tudo pronto.
Nota 💡: Quando tu inicias um aplicativo Laravel no Cloudways, ele vem com o Laravel 10.11.0 por padrão. Isso é porque é uma versão estável que foi testada e oficialmente suportada na pilha Cloudways. No entanto, se preferires usar a versão mais recente do Laravel (atualmente a versão 12.10.0), precisarás instalá-la manualmente via SSH usando o

Compositor

. Apenas certifique-se de que seu servidor esteja executando

PHP 8.2

ou superior, pois o Laravel 12 o exige.

Opcional: Actualiza para a última versão 12x do Laravel

  • Quando o servidor estiver pronto, vai para a guia Servidores no painel de controle do Cloudways.
  • Seleciona o servidor que acabaste de criar.

Seleciona o servidor que acabaste de criar

  • Agora, vai a Definições e pacotes e, em seguida, a Pacotes.
  • No meu caso, é o PHP 8.2, por isso deixo-o como está.

vai a Definições e Pacotes e depois a Pacotes

  • Agora que atualizamos a versão do PHP, podemos instalar o Laravel 12. Para isso, precisas de abrir o terminal SSH e executar o comando Composer para iniciar o processo de instalação do Laravel 12 no servidor.
  • Vai para Credenciais principais. É aqui que encontras os detalhes de acesso SFTP e SSH para todas as aplicações.

Vai para Credenciais principais. É aqui que encontras os detalhes de acesso SFTP e SSH para todas as aplicações

  • Clica no botão Launch SSH Terminal (Iniciar terminal SSH ).
  • Agora, inicia sessão com o teu Nome de utilizador e Palavra-passe. Podes encontrá-los no separador Credenciais principais.

Abre o botão Terminal SSH. Inicia sessão com o teu Nome de utilizador e Palavra-passe. Podes encontrá-los no separador Credenciais principais

  • Uma vez conectado, navegue até a pasta do seu aplicativo: cd /home/master/applications/your-app-id/private_html. Você pode obter o ID do aplicativo no painel do Cloudways na guia Detalhes de acesso.

Podes obter o teu ID da aplicação no teu painel de controlo da Cloudways no separador Detalhes de acesso

Nota 💡: Estamos a navegar para /home/master/applications/your-app-id/private_html porque quando inicias um servidor na Cloudways com uma aplicação Laravel, ele instala o Laravel por defeito no diretório public_html. Então, para instalar o Laravel 12, temos que fazer isso dentro de private_html. Dessa forma, evitamos interferir no aplicativo existente e podemos instalar com segurança o Laravel 12 em paralelo. Isso não substituirá a instalação padrão do Laravel 10. Mas se mais tarde decidires substituir a antiga aplicação Laravel 10 pela tua nova instalação Laravel 12, podes fazê-lo apontando a pasta public_html para o diretório /public da tua aplicação Laravel 12. Por enquanto, vamos manter as duas versões rodando lado a lado: Laravel 10 para o frontend, e Laravel 12 para scripts de backend ou testes.
  • Uma vez conectado, dentro de private_html, executa: composer create-project laravel/laravel:^12 my-new-laravel-app. Podes substituir my-new-laravel-app pelo nome que quiseres para a nova pasta da aplicação.

Uma vez conectado, dentro do html privado, executa o composer para criar uma nova aplicação laravel 12

  • Para verificar a instalação do Laravel 12, vai para o novo diretório Laravel que criaste: cd my-new-laravel-app.
  • Executa o seguinte comando no teu diretório de projeto Laravel para garantir que estás a executar o Laravel 12: php artisan –version

Executa o seguinte comando no teu diretório de projeto Laravel para garantir que estás a executar o Laravel 12 php artisan --version

E pronto. O resultado mostra que a aplicação Laravel 12 foi configurada e os pacotes necessários foram instalados.

Configura a tarefa Cron do Laravel

Para configurar um cron job do Laravel, o primeiro passo é criar um comando Artisan personalizado. O Artisan é a ferramenta de linha de comando integrada do Laravel que ajuda a automatizar tarefas comuns.

Para este tutorial, vamos criar um comando chamado HourlyUpdate que podes depois agendar para ser executado automaticamente.

1. Cria um comando personalizado do Artisan

Começa por navegar para o diretório do projeto Laravel 12. Se seguiste os passos anteriores, a minha aplicação Laravel 12 está localizada em:

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

Uma vez dentro da pasta do teu projeto Laravel, executa este comando:

php artisan make:command HourlyUpdate

Isto irá gerar um novo ficheiro em app/Console/Commands/HourlyUpdate.php. É aqui que vais definir a lógica para qualquer tarefa que queiras automatizar.

criaste o teu comando personalizado do Artisan HourlyUpdate.php

Acabaste de criar o teu comando personalizado do Artisan HourlyUpdate.php.

2. Edita o ficheiro de comandos

Agora que o teu comando HourlyUpdate foi criado, está na altura de definir o que faz realmente.

Abre o ficheiro de comandos num editor de terminal (como o nano). Executa este comando na mesma janela SSH onde criámos o comando Artisan anteriormente:

nano app/Console/Commands/HourlyUpdate.php

Agora, deves ver o editor nano. Dentro deste ficheiro, verás um par de linhas de espaço reservado que precisam de ser actualizadas.

actualiza os marcadores de posição no nano editor

Substitui tudo o que está lá dentro por esta estrutura de comando de exemplo (podes ajustar a lógica dentro de handle() com base no que queres que o comando faça):

<?php

namespace App\Console\Commands;

utiliza o comando Illuminate\Console\Command;

class HourlyUpdate extends Command

{

protected $signature = 'hourly:update';

protected $description = 'Executa tarefas que têm de ser executadas de hora a hora';

função pública __construct()

{

parent::__construct();

}

função pública handle()

{

// A tua lógica aqui

\Log::info("O comando HourlyUpdate foi executado a " . now()); 

$this->info('Comando de atualização por hora executado.');

}

}

Quando acabares de adicionar o código:

  • Pressiona Ctrl + O (depois pressiona Enter para confirmar a gravação)

Pressiona Ctrl + O (depois pressiona Enter para confirmar a gravação)

  • Em seguida, pressiona Ctrl + X para sair

3. Regista o comando

Para que o Laravel reconheça e utilize o teu novo comando, tens de o registar no ficheiro Kernel.php.

Abre o ficheiro app/Console/Kernel.php:

nano app/Console/Kernel.php

No meu caso, o ficheiro app/Console/Kernel.php está vazio, o que não é típico de um projeto Laravel.

ficheiro appConsoleKernel.php

Normalmente, este ficheiro contém a estrutura necessária para definir e agendar comandos, incluindo o método schedule e a matriz $commands.

Não te preocupes, vamos recriar as partes essenciais deste ficheiro.

Aqui está o aspeto que o ficheiro Kernel.php básico deve ter:

<?php

namespace App\Console;

utiliza Iluminação\Console\Scheduling\Schedule;

utiliza Illuminate\Foundation\Console\Kernel como ConsoleKernel;

classe Kernel extends ConsoleKernel

{

/**

* Os comandos Artisan fornecidos pela tua aplicação.

*

* @var array

*/

protected $commands = [

// Regista aqui o novo comando

Comandos\HourlyUpdate::class,

];

/**

* Define o calendário de comandos da aplicação.

*

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

* @return void

*/

protected function schedule(Schedule $schedule)

{

// Agenda o comando hourly para ser executado a cada hora

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

}

/**

* Regista os comandos para a aplicação.

*

* @return void

*/

função protegida commands()

{

$this->carrega(__DIR__.'/Comandos');

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

}

}

como deve ser o ficheiro Kernel.php básico

  • Cola o código acima no ficheiro e, tal como anteriormente, prime Ctrl + O para guardar o ficheiro.
  • Em seguida, prime Enter para confirmar o nome do ficheiro.
  • Sai do editor premindo Ctrl + X.

O que é que se passa aqui?

Anteriormente, criámos um comando personalizado chamado HourlyUpdate. Poderíamos ter-lhe dado qualquer nome, por exemplo, SendNewsletter, CleanTempFiles, ou UpdateStats – o que fizer sentido para a tua tarefa.

Agora, na classe App\Console\Kernel, estamos a dizer ao Laravel duas coisas:

1. Regista o comando

protected $commands = [

Comandos\HourlyUpdate::class,

];

Isso permite que o Laravel saiba sobre nosso comando personalizado para que possa executá-lo quando programado.

2. Agenda quando deve ser executado

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

Programa o comando para ser executado uma vez a cada hora usando o método ->hourly() do Laravel.

Embora ->hourly() seja perfeito para este exemplo, Laravel dá-te uma variedade de métodos de agendamento para corresponder a diferentes necessidades de tempo. Aqui está uma referência rápida:

Método Descrição
->cron(‘* * * * * *’) Executa a tarefa numa agenda Cron personalizada
->everyMinute() Executa a tarefa a cada minuto
->everyFiveMinutes() Executa a tarefa a cada cinco minutos
->everyTenMinutes() Executa a tarefa a cada dez minutos
->a cada trinta minutos() Executa a tarefa a cada trinta minutos
->hourly() Executa a tarefa a cada hora
->hourlyAt(17) Executa a tarefa de hora em hora aos 17 minutos
->diário() Executa a tarefa todos os dias à meia-noite
->dailyAt(’13:00′) Executa a tarefa todos os dias às 13:00
->twiceDaily(1, 13) Executa a tarefa diariamente à 1:00 AM e às 1:00 PM
->weekly() Executa a tarefa todas as semanas
->monthly() Executa a tarefa todos os meses
->monthlyOn(4, ’15:00′) Executa a tarefa no dia 4 de cada mês às 15 horas
->quarterly() Executa a tarefa a cada trimestre
->yearly() Executa a tarefa todos os anos
->timezone(‘America/New_York’) Define o fuso horário para o calendário

Depois disso, testa o comando personalizado utilizando:

php artisan hourly:update

Consegue-o:

O comando php artisan hourlyupdate está a funcionar

Agora que está a correr com sucesso, o próximo passo é certificares-te de que está programado para correr automaticamente a cada hora através do agendador de tarefas do Laravel.

4. Configura o Agendador do Laravel no Cron

Agora é hora de adicionar um cron job ao teu servidor para executar o agendador do Laravel a cada minuto. Isso permitirá que o Laravel verifique se alguma tarefa agendada (como o teu comando de hora em hora) precisa ser executada.

Edita o ficheiro Crontab:

Abre o editor crontab executando:

crontab -e

Adiciona o comando do programador:

No final do ficheiro crontab, adiciona a seguinte linha:

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

No final do ficheiro crontab, adiciona o Comando do Agendador

Isso dirá ao cron para executar o agendador do Laravel a cada minuto. O Laravel irá então verificar se é hora de executar qualquer comando agendado.

Guardar e sair:

Depois de adicionar esta linha, salva e sai do editor crontab:

Como estamos a utilizar o nano, prime Ctrl + O para guardar e, em seguida, Ctrl + X para sair.

5. Confirma que o teu Cron Job está a funcionar

Agora, o teu comando HourlyUpdate deve ser executado automaticamente a cada hora, uma vez que está agendado através do agendador do Laravel.

Para confirmar que a tarefa cron está a funcionar, podes ver as tuas tarefas cron activas executando o seguinte comando:

crontab -l

podes ver as tuas tarefas cron activas executando o seguinte comando crontab -l

Isto irá listar todos os trabalhos cron para o utilizador atual. Deves ver a entrada que adicionaste: * * * * * php /home/master/applications/ufgwymvjfb/private_html/my-new-laravel-app/artisan schedule:run >> /dev/null 2>&1

No nosso caso, podemos ver isso na captura de ecrã acima, por isso é um sucesso.

Para teres mais certezas, podes executar a tua tarefa cron manualmente com o seguinte comando (isto irá ignorar o agendador de tarefas cron e executar o comando diretamente):

Se for executado corretamente e apresentar a mensagem“Comando de atualização horária executado.“, sabes que o comando funciona e está pronto para ser agendado.

E, como podes ver, funciona:

executa a tua tarefa cron manualmente

Como a Cloudways facilita a configuração dos Cron Jobs do Laravel?

Anteriormente, vimos como configurar um cron job do Laravel manualmente usando SSH – criando o comando HourlyUpdate, registrando-o, agendando-o no Laravel e, em seguida, configurando o crontab de todo o sistema.

Essa abordagem funciona, e é sólida se estiveres confortável usando a linha de comando. Mas se o teu aplicativo estiver hospedado no Cloudways, há realmente uma maneira muito mais simples de lidar com isso – não há necessidade de tocar no terminal ou editar arquivos do servidor manualmente.

Aqui está como podes fazer a mesma coisa – executando php artisan schedule:run a cada minuto – através da plataforma Cloudways:

Configurando o Laravel Scheduler na Cloudways

  • Vai à tua conta Cloudways e abre a aplicação em que queres trabalhar.

Vai à tua conta Cloudways e abre a aplicação em que queres trabalhar

  • No menu do lado esquerdo, clica em Gestão de tarefas Cron.

clica em Gestão de tarefas Cron

  • Muda para o separador Avançadas – isto dá-te controlo total sobre o formato do comando.

Muda para o separador Avançadas

  • Introduz o comando abaixo, substituindo o nome_da_pasta_do_projecto pela pasta real da tua aplicação: * * * * * php /home/master/applications/your_project_folder_name/public_html/artisan schedule:run >> /dev/null 2>&1
  • Adiciona este comando no meu caso: * * * * * php /home/master/applications/ufgwymvjfb/private_html/my-new-laravel-app/artisan schedule:run >> /dev/null 2>&1

adiciona o código da tua tarefa cron

  • Isso diz ao servidor para verificar a cada minuto se o Laravel tem algo programado para ser executado – incluindo o comando de atualização por hora que configuramos anteriormente.
  • Carrega em “Guardar alterações” e o agendador começará a verificar as tarefas automaticamente.

Em comparação com a configuração manual das coisas, a Cloudways cuida da maior parte da configuração em segundo plano para ti. Você ainda escreve e agenda seus comandos Laravel da mesma forma, mas executá-los regularmente é apenas uma questão de preencher um campo e clicar em salvar.

Agendamento de tarefas Cron sem esforço com a hospedagem Laravel da Cloudways

Automatiza suas tarefas do Laravel com apenas alguns cliques – sem dores de cabeça no servidor, sem configurações complexas. O Cloudways torna a execução de trabalhos agendados mais rápida, fácil e sem preocupações.

Conclusão

Quer te sintas confortável a trabalhar a partir da linha de comandos ou prefiras a simplicidade de um painel visual como o que a Cloudways oferece, a configuração dos cron jobs do Laravel não precisa de ser complicada.

Neste guia, acompanhei-te através da rota manual – criando um comando Artisan personalizado, registando-o no Kernel e configurando um cron job ao nível do sistema para ativar o agendador do Laravel a cada minuto.

Depois, mostrei-te como a mesma tarefa pode ser tratada mais facilmente na Cloudways, usando o Cron Job Manager para alcançar o mesmo resultado com muito menos esforço.

Ambos os métodos funcionam, mas se preferires evitar potenciais deslizes, a abordagem da Cloudways é definitivamente a aposta mais segura.

Q) Como posso agendar um cron job no Laravel?

Para agendar um cron job no Laravel, primeiro abre o terminal e navega até a raiz do projeto. Edita o ficheiro crontab usando crontab -e, depois adiciona a seguinte linha:

Deixa a Cloudways lidar com o trabalho pesado com gerenciamento de servidor automatizado, hospedagem Laravel otimizada e agendamento de trabalho cron simples.

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

Em seguida, define as tuas tarefas agendadas em app/Console/Kernel.php no método de agendamento:

função protegida schedule(Schedule $schedule) {

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

}

Guarda as alterações no crontab, e o teu cron job irá agora correr automaticamente no intervalo definido.

Q) Qual é o objetivo dos cron jobs no Laravel?

As tarefas Cron automatizam tarefas recorrentes, como a limpeza da base de dados, o envio de notificações ou a execução de comandos agendados em intervalos específicos, sem necessidade de intervenção manual.

Q) Posso agendar vários cron jobs no Laravel?

Sim, podes definir várias tarefas agendadas em app/Console/Kernel.php, cada uma com diferentes frequências de execução usando o agendador do Laravel. Cada tarefa pode ser agendada de forma independente.

Q) Qual é a diferença entre uma fila e um cron job no Laravel?

Os trabalhos Cron são utilizados para executar tarefas em horários programados, como relatórios noturnos ou limpeza de dados. As filas, por outro lado, tratam tarefas de longa duração de forma assíncrona, permitindo que a sua aplicação processe tarefas em segundo plano sem abrandar os pedidos dos utilizadores.

Q) Como é que executo o agendador do Laravel automaticamente?

Para executar o agendador do Laravel automaticamente, configura uma tarefa cron com crontab -e e adiciona:

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

Este cron job executa o agendador do Laravel a cada minuto, executando quaisquer tarefas agendadas que tenham sido definidas em app/Console/Kernel.php.

Q) Como posso agendar um cron job a cada 5 minutos no Laravel?

Para agendar um cron job a cada 5 minutos, edita o teu crontab com crontab -e e adiciona o seguinte:

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

Isto assegura que o teu cron job é executado a cada 5 minutos.

Q) Como é que verifico se um trabalho cron do Laravel está a ser executado?

Podes verificar se o serviço cron está em execução utilizando o seguinte comando:

ps aux | grep cron

Para ativar manualmente o agendador do Laravel e confirmar que a tua tarefa cron está a ser executada corretamente, executa o seguinte comando na raiz do teu projeto:

php artisan schedule:run

Isto irá executar imediatamente quaisquer tarefas agendadas em app/Console/Kernel.php.

Share your opinion in the comment section. COMMENT NOW

Share This Article

Abdul Rehman

O Abdul é um profissional de marketing experiente em tecnologia, movido a café e criativo, que adora manter-se a par das últimas actualizações de software e gadgets tecnológicos. É também um escritor técnico competente que consegue explicar conceitos complexos de forma simples para um público alargado. Abdul gosta de partilhar os seus conhecimentos sobre a indústria da nuvem através de manuais de utilizador, documentação e publicações em blogues.

×

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!

Quer experimentar a plataforma Cloudways em todo o seu esplendor?

Faça um tour guiado GRATUITO pela Cloudways e veja por si mesmo como é fácil gerenciar seu servidor e suas aplicações na principal plataforma de hospedagem em nuvem.

Iniciar mi recorrido