Linux /etc/cron.d增加定时任务

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

 

posted @ 2020-09-10 14:49  晴箜万里  阅读(2825)  评论(0编辑  收藏  举报