Estranho, verifica pra mim se você tem instalado algum gerenciador de tarefa no seu SO. No ubuntu você pode instalar rodando a linha de comando:
sudo apt-get install gnome-schedule
Tendo uma ferramenta de gerenciamento de tarefas instalada você precisa editar o arquivo que mapeia as tarefas. No caso do ubuntu você poderia executar o comando crontab -e
.
Isso abrirá no seu terminal o arquivo que gerencia as tarefas do seu sistema operacional. Nesse arquivo você adiciona a linha:
* * * * * php /seuProjeto/artisan schedule:run >> /dev/null 2>&1
Os asteriscos representam, respectivamente: minutos (0-59), horas (0-23, 0 = meia noite), dia (1-31), mes (1-12), dia da semana (0-6, 0 = Domingo). Nosso comando * * * * *
representa uma repetição de minuto em minuto. php /seuProjeto/artisan schedule:run
é o comando que queremos que seja executado de minuto em minuto.
Com isso, o proprio laravel gerencia todas as tarefas referentes a sua aplicação. Se não fosse isso, a gente precisaria criar uma linha naquele arquivo para cada tarefa da aplicação. A ideia é justamente reduzir o problema com a gestão de tarefas e centralizar tudo no laravel.
Executar esse comando no terminal executará uma unica vez aquelas tarefas mesmo. Adicionando esse comando em um cron, tudo fica automatizado.
No windows o equivalente ao cron seria o schtasks.