背景
有些服务器因特殊需求,cron定时任务很多,为方便新增和统一维护及管理,实现将cron定时任务在数据库中配置化;再在服务器中配置一个corn定时任务,每天凌晨从数据库中读取配置的信息来刷新服务器上的cron任务
实现方式
通过Shell脚本执行sql读取config_cron表,查询出所有涉及本服务器的定时任务的配置,并拼接成一个contab格式的表达式,写入到一个临时文件(命名方式:crontab_ip_年月日),然后再执行【crontab crontab_ip_年月日】命令,将文件中所有的定时任务配置在服务器中
如下部分脚本展示
config_cron表的字段
seq_name/project_name/ip/week/month/day/hour/minute/extract_type/last_config_user/last_config_day/command
1。执行sql,查询并拼接crontab格式表达式,将查询结果写入到临时文件contab_${ip}_$FILENAME
拼接的sql语句
生成的临时crontab的语句的配置文件contab_${ip}_$FILENAME
2。执行crontab命令,将临时文件contab_${ip}_$FILENAME
里边的所有crontab配置命令配置到服务器
crontab $MODEL_PATH/crontab_$ip_$FILENAME