一般情況下我們添加計划任務時,都是直接修改/etc/crontab。但是,不建議這樣做,/etc/cron.d目錄就是為了分項目設置計划任務而創建的。
例如,增加一項定時的備份任務,我們可以這樣處理:在/etc/cron.d目錄下新建文件crontabAdd,內容如下:
# m h dom mon dow user command
*/1 * * * * root test >> test.log
cron進程執行時,就會自動掃描該目錄下的所有文件,按照文件中的時間設定執行后面的命令。
cron執行時,也就是要讀取三個地方的配置文件:一是/etc/crontab,二是/etc/cron.d目錄下的所有文件,三是每個用戶的配置文件
假設是timedtask.sh腳本(支持多次跑腳本)
#!/bin/bash #athor check crontab phpbin="docker exec b5ac216a8c67 php" #php運行路徑 File="/vagrant/www/cst-group/console/yii" #項目路徑 crontabAdd(){ cat >/etc/cron.d/$1<<EOF #任務開始 */1 * * * * root $phpbin $File marketing/activity/coupons >> /vagrant/www/cst-group/test.log #任務結束 EOF } #替換 checkCrontab (){ cronName="crontabAdd" if [ ! -f /etc/cron.d/$cronName ] then rm /etc/cron.d/$cronName fi $cronName $cronName } checkCrontab "$1" echo -e "\033[32m crontab 已經開始寫入 \033[0m"
運行方式 <br/>
1.服務器直接運行./timedtask.sh
2。其他的構建工具運行
運行之后:
注意:
1.任務開始和任務結束之間的想法跟在Linux上寫crontab一樣
2.這里必須加上執行用戶才行,否則會運行不了