【问题标题】:mongodb fork in windowswindows中的mongodb fork
【发布时间】:2013-02-17 13:32:49
【问题描述】:

我在教程中看到他们使用--fork 作为 mongod 的参数。但是当我尝试这样做时,它会显示未知选项--fork。那么如何在windows上--forkmongodb呢?

【问题讨论】:

  • 是的 --fork 是 linux 的东西,我不认为 windows 有一个

标签: mongodb


【解决方案1】:

Windows 不像 Unix 一样支持 fork 机制,在 Windows 上最接近的等价物是将 mongod 作为服务运行,如 the Mongo manual 中所述。

【讨论】:

    【解决方案2】:

    --fork 实际上是一个 Linux 命令,而不是 Windows 或 mongod 命令。我认为 Windows 上根本不存在同样的情况。

    Linux 在这里有两个原语,forkexec,但 Windows 只有真正的 createProcess,实际上是 fork-和-exec

    设置服务并在fork 模式下运行它是不一样的,服务更像是init.d 脚本,但这是目前唯一的方法。

    Cygwin 可以非常缓慢地在 Windows 上模拟 fork,如下所述:What is the closest thing windows has to fork()?

    【讨论】:

    • 可以使用启动命令,使其在命令提示符下启动
    【解决方案3】:

    您可以在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

    ...

    【讨论】:

    • 你将如何阻止每个或任何一个 mongods ?
    • mongo localhost:27017 --eval "db.adminCommand({shutdown : 1})" mongo localhost:27018 --eval "db.adminCommand({shutdown : 1})" mongo localhost:27019 --eval "db.adminCommand({shutdown : 1})"
    • 不确定您使用的是什么版本的 windows 和 mongodb,但这不适用于 win 7 和 MongoDB v4
    【解决方案4】:

    命令 --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

    【讨论】:

      【解决方案5】:

      --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 启用守护进程模式,该模式将进程运行到 背景。这是正常的操作模式,在生产和 类似生产的环境,但可能不适合测试。

      【讨论】:

        【解决方案6】:

        windows 中,没有 fork 命令起作用,因为可以使用以下命令将 mongodb 用作服务: 开始服务

        net start mongodb
        

        要停止服务:打开 cmd 并使用以下命令

        net stop mongodb
        

        【讨论】:

          猜你喜欢
          • 2023-03-24
          • 2012-08-09
          • 2019-05-19
          • 1970-01-01
          • 2022-01-21
          • 1970-01-01
          • 2010-11-02
          • 1970-01-01
          相关资源
          最近更新 更多