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