Как запустить запланированную задачу в Ubuntu с помощью строки из Laravel

Как запустить запланированную задачу в Ubuntu с помощью строки из Laravel

Мне нужно запустить sudo php artisan backup:runи автоматически вводить пароль каждый день в 3 часа дня. Я знаю, как это сделать в Windows, просто используя планировщик задач и установив запуск от имени администратора в .bat-скрипте.

решение1

Этодолженв Ubuntu 14.04 все примерно так же, как и в последних релизах, однако могут быть некоторые различия.

Задание разделено на две части:

  • Чтобы иметь возможность работать sudoбез пароля, добавьте пользователя в sudoersфайл и разрешите ему не запрашивать пароль.
  • Для автоматического запуска задания используйте cron.

sudoers

Добавьте пользователя в группу sudo с помощью

usermod -aG sudo <username>

Измените <username>имя пользователя, от имени которого вы хотите запустить задание.

Чтобы избежать необходимости вводить пароль, отредактируйте /etc/sudoersфайл:

visudo

и добавьте следующую строку в конец файла:

<username>  ALL=(ALL) NOPASSWD:ALL

Снова измените имя <username>на пользователя, от имени которого вы хотите запустить задание.

Обратите внимание, что лучшим подходом будет создание нового файла sudoers для вашего конкретного пользователя вместо редактирования основного файла sudoers, например так:

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

Для получения дополнительной информации см.Как добавить пользователя в Sudoers в Ubuntu.

См. также этот вопрос,Как добавить пользователя в качестве нового sudoer с помощью командной строки?

хрон

cron очень мощный и имеет много различных опций. Однако, чтобы выполнить вашу задачу, вот только основные элементы:

Чтобы отредактировать crontab, используйте

crontab -e

или для другого пользователя используйте

crontab -u ostechnix -e

Если вы никогда раньше не запускали crontab, при первом запуске вам может быть предложено выбрать редактор.

Затем для работы в 3 часа дня добавьте строку

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

Так что в вашем случае используйте

0 15 * * * sudo php artisan backup:run

Сохраните и выйдите в редактор. Затем, чтобы проверить crontab, используйте

crontab -l

Если вы хотите изменить время, поля приведены ниже на странице руководства 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".

Для получения дополнительной информации crontabсм.Руководство для новичков по заданиям Cron, или введите man cron.

См. также этот вопрос,Как настроить задание Cron?

Связанный контент