一般情况下我们添加计划任务时,都是直接修改/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<
#任务开始
*/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"
运行方式
1.服务器直接运行./timedtask.sh
2。其他的构建工具运行
运行之后:
注意:
1.任务开始和任务结束之间的想法跟在Linux上写crontab一样
2.这里必须加上执行用户才行,否则会运行不了