Мне нужно запустить 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?