如何使用 Laravel 中的行在 Ubuntu 上執行排程任務

如何使用 Laravel 中的行在 Ubuntu 上執行排程任務

我需要sudo php artisan backup:run每天下午 3 點運行並自動輸入密碼。我知道如何在 Windows 上執行此操作,只需使用任務計劃程序並在 .bat 腳本上設定以管理員身份運行。

答案1

這是應該Ubuntu 14.04 上的版本與最新版本上的版本幾乎相同 - 但是,它們可能存在一些差異。

任務分為兩部分:

  • 為了能夠sudo無需密碼,請將用戶添加到sudoers文件中並允許他們不需要密碼。
  • 若要自動執行作業,請使用cron.

蘇多爾斯

將使用者新增至 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 作業初學者指南,或輸入man cron

另請參閱這個問題,如何設定 Cron 作業?

相關內容