一般情况下我们添加计划任务时,都是直接修改/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.这里必须加上执行用户才行,否则会运行不了