背景
用linux服务器,crontab使用的是很多的,大型项目,可能一台机要配置几十上百个定时任务来跑,每次发布都是crontab -e上去编辑然后保存,数量少还好,但是后面维护起来就比较麻烦了,有些没用的也不敢清,越多维护的成本越高,如果能做成代码里面配置的就好了,指定哪台机有哪些crontab,发布的时候,更新一下就好了,其实crontab是支持这种做法的
方案
crontab 一般使用的比较多的指令是
crontab -e
crontab -l
其实还有一个,很少人用
crontab file_name //crontab + 文件名
就可以直接更新crontab了,而且也不影响正在运行的,前提是文件内的格式要对
因此,可以加一个配置
$config[$ip] = [
[
"min" => "*",
"hour" => "*",
"day" => "*",
"week" => "*",
"month" => "*",
"command" => "php /html/project/artian test:command >> /tmp/command.log 2>&1 &"
],
[
"min" => "*",
"hour" => "*",
"day" => "*",
"week" => "*",
"month" => "*",
"command" => "php /html/project/artian test:command2 >> /tmp/command.log2 2>&1 &"
]
];
发布的时候,用代码转成crontab 的格式
* * * * * php /html/project/artian test:command >> /tmp/command.log 2>&1 &
的文件,crontab.txt
然后执行
crontab crontab.txt
就万事大吉了,以后只需要维护代码就行了,再也不用提心吊胆的上机器操作了,至于如果要做得安全可靠一点,那就可以根据不同需求去做了,这里只提供一个大概的方案和思路
转载:https://blog.csdn.net/szulilin/article/details/101544696
查看评论