我需要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
有关详细信息,请参阅如何在 Ubuntu 中将用户添加到 Sudoers。
另请参阅这个问题,如何使用命令行将用户添加为新的 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 Jobs 新手指南,或者输入man cron
。
另请参阅这个问题,如何设置 Cron 作业?