mongodb中cron定时任务
2013-10-14 17:45
302 查看
需求:
每天定时清除mongodb中某一天之前的数据
思路:
采用shell脚本调用mongodb的命令执行js脚本即可。
步骤:
1.编写email.js文件,作用:清除mongodb某天之前数据,具体代码如下:
2. 编写shell脚本mongo_clean.sh代码如下:
注意:/data/web/mongodb/mongodb-linux-x86_64-2.4.5/bin/mongo 必须用全路径,由于使用root用户安装mongodb,但是crontab执行时候,不能直接使用
3.加入crontab中:
10 0 * * * sh /data/web/agx/mongo_clean.sh
即完成shell操作mongodb执行定时任务,根据任务不同,修改对应的js文件。
每天定时清除mongodb中某一天之前的数据
思路:
采用shell脚本调用mongodb的命令执行js脚本即可。
步骤:
1.编写email.js文件,作用:清除mongodb某天之前数据,具体代码如下:
Date.prototype.format = function(format) { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond } if(/(y+)/.test(format)) format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); return format; } function getDay(day){ var today = new Date(); var targetday_milliseconds=today.getTime() + 1000*60*60*24*day; today.setTime(targetday_milliseconds); //注意,这行是关键代码 var tYear = today.getFullYear(); var tMonth = today.getMonth(); var tDate = today.getDate(); tMonth = doHandleMonth(tMonth + 1); tDate = doHandleMonth(tDate); return tYear+"-"+tMonth+"-"+tDate+" 00:00:00"; } function doHandleMonth(month){ var m = month; if(month.toString().length == 1){ m = "0" + month; } return m; } var myDate = new Date(); var datetime = myDate.format("yyyy-MM-dd 00:00:00"); var pre7day = getDay(-7); print("today="+datetime+"deleteday="+pre7day); datetime= new Date(datetime); pre7day= new Date(pre7day); var count=db.Mail.find({'updateTime':{'$lt':pre7day}}).count(); print("count="+count); db.Mail.remove({'updateTime':{'$lt':pre7day}}); print('前7天邮件清理完毕...'); exit
2. 编写shell脚本mongo_clean.sh代码如下:
#!/bin/bash #清空mongodb中的前7天邮件: guoxin.ai@renren-inc.com /data/web/mongodb/mongodb-linux-x86_64-2.4.5/bin/mongo 10.3.18.80:27017/mail -quiet /data/web/email.js
注意:/data/web/mongodb/mongodb-linux-x86_64-2.4.5/bin/mongo 必须用全路径,由于使用root用户安装mongodb,但是crontab执行时候,不能直接使用
mongodb-linux-x86_64-2.4.5/bin/mongo 10.3.18.80:27017/mail -quiet /data/web/email.js,否则定时任务不会启动,由于找不到mongodb而导致。
3.加入crontab中:
10 0 * * * sh /data/web/agx/mongo_clean.sh
即完成shell操作mongodb执行定时任务,根据任务不同,修改对应的js文件。
相关文章推荐
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- [BAT][JAVA]定时任务之-Quartz使用篇(通过这个配置可以知道在做Quartz的时候需要的jar文件/Cron表达式使用语法/常用Cron表达式)
- linux crontab命令参数及用法详解--linux自动化定时任务cron
- Linux上的定时计划任务at和周期计划任务cron
- Linux操作系统定时任务系统Cron入门、PHP计划任务以及rpc示例
- @Scheduled(cron="") spring定时任务时间设置
- Go实战--golang中执行cron job定时任务(robfig/cron和jasonlvhit/gocron)
- linux中Cron定时任务系统命令详解
- Debian 使用 cron 执行定时任务
- linux crontab命令参数及用法详解--linux自动化定时任务cron
- linux下的cron定时任务
- Linux操作系统定时任务系统 Cron
- debian9 设置cron定时执行任务
- linux下用cron定时执行任务的方法
- 定时任务crontab cron.d
- 【转】Spring中quartz的定时任务 关于cronExpression的介绍
- 定时任务 Cron表达式
- linux下设置定时任务-cron使用
- spring 定时任务cron在线表达式生成
- UNIX下的定时任务-----cron