如何使用 Laravel 中的行在 Ubuntu 上运行计划任务

如何使用 Laravel 中的行在 Ubuntu 上运行计划任务

我需要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 作业?

相关内容