You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建每月连接MongoShell执行指定命令的Cron定时任务?

创建每月执行的Cron定时任务连接MongoDB 2.0.7 Shell执行命令

步骤1:编写MongoDB执行脚本

先把需要执行的MongoDB命令写到单独的JS文件中,避免Cron命令过于复杂,也方便调试。

比如创建/opt/mongo_scripts/monthly_task.js,内容示例:

// 切换到目标数据库
use your_target_db;

// 若需认证,执行此句(替换为你的用户名和密码)
db.auth("your_username", "your_password");

// 执行自定义命令,示例:统计集合文档数
var docCount = db.your_target_collection.count();
print("Monthly collection document count: " + docCount);

// 其他命令示例:清理30天前的过期数据
// db.your_target_collection.remove({ createTime: { $lt: new Date(Date.now() - 30*24*60*60*1000) } });
// print("Expired documents cleaned up successfully");

测试脚本可用性:
直接用MongoShell执行脚本验证是否正常工作:

# 本地数据库
/usr/bin/mongo /opt/mongo_scripts/monthly_task.js

# 远程数据库(需替换host和port)
/usr/bin/mongo --host 192.168.1.100 --port 27017 /opt/mongo_scripts/monthly_task.js

确保执行后输出正确结果,无报错。

步骤2:配置Cron定时任务

  1. 打开Crontab编辑器:
crontab -e
  1. 添加定时任务条目,示例为每月1号凌晨2点执行:
0 2 1 * * /usr/bin/mongo /opt/mongo_scripts/monthly_task.js >> /var/log/mongo_monthly_task.log 2>&1

参数说明:

  • 0 2 1 * *:Cron时间规则,代表分钟0、小时2、日期1、任意月份、任意星期,即每月1号凌晨2点触发
  • /usr/bin/mongo:MongoShell的绝对路径(可通过which mongo查看实际路径)
  • >> /var/log/mongo_monthly_task.log 2>&1:将执行日志和错误信息写入指定文件,方便排查问题
  1. 保存退出编辑器,Cron会自动加载新任务。

注意事项

  • 确保运行Cron的用户拥有执行mongo命令、读写脚本文件和日志文件的权限
  • 避免在Cron命令行直接传递密码,优先通过脚本内的db.auth()完成认证,防止密码泄露
  • MongoDB 2.0.7为老旧版本,已停止官方支持,存在安全风险,建议尽快升级
  • 可先设置临时测试任务(比如* * * * *每分钟执行)验证配置正确性,测试完成后再改回每月执行规则

内容的提问来源于stack exchange,提问作者fanpero87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:11:13