Nginx/PHP/MongoDBスタックを使用しており、2つのバッチファイルを作成してWindowsで開発環境をセットアップしようとしています。
start.bat
cd C:\www\nginx
start nginx
cd C:\www\php
start php-cgi.exe -b 127.0.0.1:9000
cd C:\www\mongodb
start mongod
stop.bat
cd C:\www\nginx
nginx -s quit
cd C:\www\php
taskkill /F /IM php-cgi.exe
cd C:\www\mongodb
mongo --eval "use admin; db.shutdownServer(); quit" # this doesn't work
mongo --eval stop_mongod.js # this doesn't work either
Taskkillを使用してmongodを停止することは、データの破損につながる可能性があるため、オプションではありません。助言がありますか?
Mongoシェルから ドキュメント :
dbnameを使用する
このコマンドは、スクリプトモードでは機能しません。代わりに、接続でデータベースを明示的に定義する必要があります(上記の例では/ dbname)。
または、スクリプト内で接続を作成することもできます。
db2 = connect("server:27017/otherdbname")
私は次のコードを思いついた:次のスニペットをstop_mongod.jsファイルに保存する:
db = connect("localhost:27017/admin");
db.shutdownServer();
quit();
必要に応じて接続文字列を調整します。次に、コマンドラインから、またはバッチスクリプト内で:
mongo stop_mongod.js
それが適切な方法かどうかはわかりません。killを送信すると、mongoサーバーが損傷する可能性があり、クラッシュした場合はデータベースを修復する必要があります。
たぶんあなたはすでにこの質問を解決しましたが、これが私がすることです:
mongo admin --eval "db.shutdownServer()"
管理者のコレクションに自動的に接続し、次に、絶滅を実行する必要があります。
Mongodbを適切に停止する方法に関する公式リンクは次のとおりです: http://api.mongodb.org/wiki/current/Starting%20and%20Stopping%20Mongo.html
ベスト
サーバーがターミナルでフォアグラウンドプロセスとして実行されている場合、これはを押すことで実行できます。
Ctrl-C
実行中のサーバーをクリーンにシャットダウンする別の方法は、shutdownコマンドを使用することです。
> use admin
> db.shutdownServer();
Windowsコマンドラインから。 64ビットのWindows7 ProSP1でMongoDB3.4サーバーを使用しています。
次のリンクで手順を説明します。
configure-a-windows-service-for-mongodb-community-edition
manually-create-a-windows-service-for-mongodb-community-edition
次のコンソールコマンドラインは、起動時にMongoDBを終了します。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\System32>"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove
2017-12-06T08:15:47.883-0600 I CONTROL [main] Trying to remove Windows service 'MongoDB'
2017-12-06T08:15:47.884-0600 I CONTROL [main] Service 'MongoDB' removed
MongoDBサービスの作成コマンドライン(以下に表示)は、次のWindowsレジストリにあります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MongoDB
確認するには、次の手順を実行します。
C:\Windows\System32>sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --c
onfig=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
[SC] CreateService SUCCESS
C:\Windows\System32>net start MongoDB
The MongoDB service is starting.
The MongoDB service was started successfully.
C:\Windows\System32>net stop MongoDB
The MongoDB service is stopping.
The MongoDB service was stopped successfully.
C:\Windows\System32>"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove
2017-12-06T08:16:36.504-0600 I CONTROL [main] Trying to remove Windows service 'MongoDB'
2017-12-06T08:16:36.505-0600 I CONTROL [main] Service 'MongoDB' removed
C:\Windows\System32>
TASKKILL/IM mongod.exeを使用すると、mongodbサーバーを正常に終了できると思います。