Como executar tarefas agendadas no Ubuntu com linha do Laravel

Como executar tarefas agendadas no Ubuntu com linha do Laravel

Preciso executar sudo php artisan backup:rune inserir a senha automaticamente todos os dias às 15h. Eu sei como fazer isso no Windows apenas usando o agendador de tarefas e configurando a execução como administrador no script .bat.

Responder1

Isso édeveseja praticamente o mesmo no Ubuntu 14.04 e nos lançamentos mais recentes - no entanto, talvez haja algumas diferenças.

A tarefa está dividida em duas partes:

  • Para poder fazer isso sudosem senha, adicione o usuário ao sudoersarquivo e permita que ele não exija senha.
  • Para executar um trabalho automaticamente, use cron.

sudoers

Adicione o usuário ao grupo sudo com

usermod -aG sudo <username>

Mude <username>para o usuário com o qual você deseja executar o trabalho.

Para evitar a necessidade de inserir a senha, edite o /etc/sudoersarquivo:

visudo

e adicione a seguinte linha no final do arquivo:

<username>  ALL=(ALL) NOPASSWD:ALL

Novamente, mude <username>para o usuário com o qual deseja executar o trabalho.

Observe que uma abordagem melhor seria criar um novo arquivo sudoers para seu usuário específico, em vez de editar o arquivo sudoers principal, assim:

echo "<username>  ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username

Para mais informações vejaComo adicionar usuário ao Sudoers no Ubuntu.

Veja também esta pergunta,Como posso adicionar um usuário como novo sudoer usando a linha de comando?

cron

cron é muito poderoso e há muitas opções diferentes. No entanto, para realizar sua tarefa, aqui estão apenas os fundamentos básicos:

Para editar o crontab, use

crontab -e

ou para um usuário diferente, use

crontab -u ostechnix -e

Se você nunca executou o crontab antes, pode ser solicitado que você escolha um editor na primeira vez que executá-lo.

Então, para um trabalho às 15h, adicione a linha

0 15 * * * <command-to-execute>

Então, no seu caso, use

0 15 * * * sudo php artisan backup:run

Salve e saia para o editor. Então, para verificar o crontab, use

crontab -l

Se você quiser alterar a hora, os campos são os seguintes, na página de manual do cron.

       The time and date fields are:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sunday, or use names)

       A field may contain an asterisk (*), which always stands for
       "first-last".

Para obter mais informações sobre crontab, consulteUm guia para iniciantes em Cron Jobsou digite man cron.

Veja também esta pergunta,Como configuro um trabalho Cron?

informação relacionada