Я видел на уроках, что они используют --fork
как параметр mongod. Но когда я пытаюсь сделать это, он говорит неизвестный вариант --fork
. Итак, как --fork
mongodb на windows?
Вилка монгодба в окнах
Ответ 1
--fork
- это фактически команда Linux, а не команда Windows или mongod
. Я не считаю, что то же самое существует в Windows.
В Linux есть два примитива: fork
и exec
, но в Windows действительно есть createProcess
, что эффективно fork
-and- exec
.
Настройка службы и ее запуск в режиме fork
не то же самое, служба больше похожа на init.d
script, но в настоящий момент это единственный способ.
Cygwin может эмулировать fork в Windows очень медленно, как описано здесь: Какая ближайшая вещь имеет окна fork()?
Ответ 2
Вы можете написать start /b
(/b - означает выполнение без нового окна cmd) перед командой mongod
. Он запустит вашу команду 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
...
Ответ 3
Windows не поддерживает механизм fork
, такой как Unix-alikes, ближайший эквивалент Windows должен запускать mongod как услугу, как описано в руководство Mongo.
Ответ 4
Параметр --fork
не предназначен для пользователей MongoDB для 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
MongoDB для Unix-подобных платформ опция - fork
Включает режим демона для mongod, который запускает процесс в задний план. Это нормальный режим работы, в производстве и производственные среды, но могут быть нежелательны для тестирования.
Ответ 5
Команда --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 MongoDB
Обратите внимание, что при установке службы лучше использовать абсолютный путь для -dbpath и -log. В противном случае у службы может возникнуть проблема. Подробности обсуждались здесь: Не удается запустить MongoDB как услугу