2013-03-03 12 views
20

Widziałem na tutoriali, że używają --fork jako parametr mongod. Ale kiedy próbuję to zrobić, mówi nieznana opcja --fork. A więc w jaki sposób --fork mongodb na windows?fork mongodb w windows

+1

tak --fork jest rzeczą linux, nie sądzę, że jest jednym z okien – Sammaye

Odpowiedz

11

--fork to w rzeczywistości polecenie systemu Linux, a nie Windows lub mongod. Nie wierzę, że to samo istnieje w systemie Windows.

Linux ma dwa prymitywy tu fork i exec jednak tylko Windows naprawdę ma createProcess który skutecznie fork -i- exec.

Ustawienie usługi i jej uruchomienie w trybie fork to nie to samo, usługa jest bardziej podobna do skryptu init.d, jednak obecnie jest to jedyny sposób.

Cygwin mogą naśladować widelec na Windows, bardzo powoli, jak opisano tutaj: What is the closest thing windows has to fork()?

+0

przydałby komendę startu tak zaczyna się jej na wierszu polecenia – tgkprog

2

System Windows nie obsługuje mechanizmu fork, tak jak Unix-alikes, najbliższym odpowiednikiem w systemie Windows byłoby uruchomienie mongoda jako usługi, jak wyjaśniono w the Mongo manual.

21

Możesz napisać start /b (/ b - środki wykonać bez nowym oknie cmd) przed komendą mongod. Uruchomi on komendę asynchroniczną mongod i zwolni konsolę. Ma podobny efekt, np. fork.

Może być stosowany w skryptów .bat, na przykład, wychodząc zestawu replik:

start/b mongod --replSet M101 --logpath "1.log" --dbpath data \ RS1 - Port 27017 --smallfiles danych

start/b mongod --replSet M101 --logpath "2.log" --dbpath \ RS2 --port 27018 --smallfiles

startu/b mongod --replSet M101 --logpath "3.log" --dbpath data \ rs3 --port 27019 --smallfiles

...

+1

jak byś następnie zatrzymać każdy lub którykolwiek z mongods ? – sdfor

+3

mongo localhost: 27017 --eval "db.adminCommand ({shutdown: 1})" mongo localhost: 27018 --eval "db.adminCommand ({shutdown: 1})" mongo localhost: 27019 --eval "db .adminCommand ({shutdown: 1}) " – Hersh

+0

Może również użyć pskill, menedżera zadań lub zrestartować komputer :-) – tgkprog

0

Polecenie --fork działa tylko w systemie Linux/Unix. Jeśli potrzebujesz - możesz uruchomić mongo w tle, w Windows, który można osiągnąć instalując mongod jako usługę.

Gdy używasz mongod --install do instalacji usługi mongodb, wymagane są opcje --dbpath i --logpath. W moim przypadku potrzebuję konsoli administratora do zainstalowania usługi.

Na przykład:

mongod --dbpath=C:\mongodb\data --logpath=C:\mongodb\data\log\service.log --install 

Następnie przeglądać plik dziennika, aby zobaczyć nazwę usługi oraz inne informacje, w tym wszelkie możliwe błędy.

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' 

Domyślna nazwa usługi to "MongoDB". Nazwę usługi można nazwać opcją --serviceName podczas instalowania usługi.

Następnie uruchom usługę przy użyciu sieci.

net use MongoDB 

Uwaga podczas instalowania usługi, lepiej użyć ścieżki bezwzględnej dla --dbpath i --log. W przeciwnym razie może wystąpić problem z uruchomieniem usługi. Szczegóły zostały omówione tutaj: Cannot start MongoDB as a service

2

Opcja --fork nie jest dla MongoDB dla użytkowników systemu Windows i trzeba wykonać to każda komenda mongod w innym oknie:

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 dla uniksopodobnego platform opcji --fork

Włącza tryb demon mongod który uruchamia proces do tło. Jest to normalny tryb działania, w produkcji i środowiskach produkcyjnych, ale może nie być pożądany do testowania.