【发布时间】:2013-02-17 13:32:49
【问题描述】:
我在教程中看到他们使用--fork 作为 mongod 的参数。但是当我尝试这样做时,它会显示未知选项--fork。那么如何在windows上--forkmongodb呢?
【问题讨论】:
-
是的 --fork 是 linux 的东西,我不认为 windows 有一个
标签: mongodb
我在教程中看到他们使用--fork 作为 mongod 的参数。但是当我尝试这样做时,它会显示未知选项--fork。那么如何在windows上--forkmongodb呢?
【问题讨论】:
标签: mongodb
Windows 不像 Unix 一样支持 fork 机制,在 Windows 上最接近的等价物是将 mongod 作为服务运行,如 the Mongo manual 中所述。
【讨论】:
--fork 实际上是一个 Linux 命令,而不是 Windows 或 mongod 命令。我认为 Windows 上根本不存在同样的情况。
Linux 在这里有两个原语,fork 和 exec,但 Windows 只有真正的 createProcess,实际上是 fork-和-exec。
设置服务并在fork 模式下运行它是不一样的,服务更像是init.d 脚本,但这是目前唯一的方法。
Cygwin 可以非常缓慢地在 Windows 上模拟 fork,如下所述:What is the closest thing windows has to fork()?
【讨论】:
您可以在mongod 命令之前写入start /b(/b - 表示在没有新的 cmd 窗口的情况下执行)。它将异步启动您的mongod 命令并释放控制台提示符。所以,有类似的效果,比如fork。
可以在.bat脚本中使用,例如启动副本集:
start /b mongod --replSet m101 --logpath "1.log" --dbpath data\rs1 --port 27017 --smallfiles
start /b mongod --replSet m101 --logpath "2.log" --dbpath data\rs2 --port 27018 --smallfiles
start /b mongod --replSet m101 --logpath "3.log" --dbpath data\rs3 --port 27019 --smallfiles
...
【讨论】:
命令 --fork 仅适用于 Linux/Unix。如果您需要 --fork 在后台运行 mongod,在 Windows 上可以通过将 mongod 安装为服务来实现。
使用 mongod --install 选项安装 mongodb 服务时,需要 --dbpath 和 --logpath。就我而言,我需要使用管理员命令控制台来安装服务。
例如:
mongod --dbpath=C:\mongodb\data --logpath=C:\mongodb\data\log\service.log --install
然后浏览日志文件以查看服务名称和其他信息,包括任何可能的错误。
2014-06-25T18:21:14.245-0700 Trying to install Windows service 'MongoDB'
2014-06-25T18:21:14.253-0700 Service 'MongoDB' (MongoDB) installed with command line 'C:\mongodb-win32-x86_64-2008plus-2.6.1\bin\mongod.exe --dbpath=C:\mongodb\data --logpath=C:\mongodb\data\log\service.log --service'
2014-06-25T18:21:14.254-0700 Service can be started from the command line with 'net start MongoDB'
默认服务名称为“MongoDB”。您可以在安装服务时使用 --serviceName 选项命名服务名称。
然后用net use启动服务。
net use MongoDB
注意安装服务时,--dbpath 和--log 最好使用绝对路径。否则服务可能无法启动。详情已在此讨论:Cannot start MongoDB as a service
【讨论】:
--fork 选项不适用于 MongoDB for Windows 用户,您必须在不同的窗口中执行每个 mongod 命令:
mongod --replSet m101 --logpath "1.log" --dbpath /data/rs1 --port 27017 --smallfiles --oplogSize 64
mongod --replSet m101 --logpath "2.log" --dbpath /data/rs2 --port 27018 --smallfiles --oplogSize 64
mongod --replSet m101 --logpath "3.log" --dbpath /data/rs3 --port 27019 --smallfiles --oplogSize 64
用于类 Unix 平台的 MongoDB 选项 --fork
为 mongod 启用守护进程模式,该模式将进程运行到 背景。这是正常的操作模式,在生产和 类似生产的环境,但可能不适合测试。
【讨论】: