mongodbは実行されていますか?


117

私のUnixサーバーにmongodbとphpドライバーをインストールしました。

私の質問は、mongodbが実行されているかどうかをどのように確認できるかです。ステータスを確認する簡単なコマンドラインクエリはありますか?シェルから一度起動すると、シェルを終了しても実行を続けます(そうではないようです)。mongodb接続を永続化し、サーバーの再起動時に自動起動するにはどうすればよいですか?

走れる:

-bash-3.2 $ su
パスワード:
[root @ xxx]
#cd / var / lib [root @ xxx]#
. / mongodb-linux-i686-1.6.5 /bin/ mongod ./mongodb-linux-i686-1.6。 5 / bin / mongod --help for help and startup options
Wed Feb 23 08:06:54 MongoDB starting:pid = 7271 port = 27017 dbpath = / data / db / 32-bit

**注:MongoDB 32ビットを使用する場合、データは約2ギガバイトに制限されます
** http://blog.mongodb.org/post/137788967/32-bit-limitationsを参照してください

**警告:OpenVZで実行しています。これは壊れていることが知られています!!!

2月23日水曜日08:06:54 dbバージョンv1.6.5、pdfileバージョン4.5
2月23日水曜日08:06:54 gitバージョン:0eb017e9b2828155a67c5612183337b89e12e291
2月23日水曜日08:06:54システム情報:Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen#1 SMP金
2月15日12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
水2月23日08:06:54 [initandlisten]ポート27017での接続を待機
水2月23日08: 06:54 [websvr]ポート28017でリッスンするWeb管理インターフェイス

別のシェルを開くと、mongodbに接続できます。

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDBシェルバージョン:1.6.5
接続先:test
db.foo.find()
{" _id ":ObjectId(" 4d63d7d3eb95985ab19c8feb ")、" a ":1}

ただし、最初のシェルを閉じると接続できません。

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDBシェルバージョン:1.6.5
接続先:test
Wed Feb 23 08:25:10エラー:サーバー127.0.0.1に接続できませんでした(anon):1154
例外:接続に失敗しました

回答:


144

次のいずれかで確認してください。

   ps -edaf | grep mongo | grep -v grep  # "ps" flags may differ on your OS

または

   /etc/init.d/mongodb status     # for MongoDB version < 2.6

   /etc/init.d/mongod status      # for MongoDB version >= 2.6

または

   service mongod status

mongodが実行されているかどうかを確認します(これを行うにはrootになるか、すべての前にを付ける必要がありますsudo)。「grep」コマンドも常に別のプロセスとして表示されることに注意してください。

ログファイル/var/log/mongo/mongo.logをチェックして、問題が報告されていないか確認します


20
する必要があります:service mongodb status
MhdSyrwan

12
を行うこともできますpgrep mongo
slm

1
私はこれを得ました:501 5365 418 0 4:10 pm ttys000 0:00.00 grep mongo、それはそれが実行されていることを意味しますか?
L1ghtk3ira 2016年

1
service mongodb statusは機能しませんが、service mongodb statusは機能します。
viks

5
mongo 2.6から、サービスはmongodbより前のmongodbであり、混乱しています。はい
tsukimi

40

私は見つけます:

ps -ax | grep mongo

より一貫性を保つため。返された値を使用して、実行中のmongodのインスタンスの数を検出できます。


6
また、実行中のgrepプロセスを返さないようにフィルターを追加することも検討してください。つまり、ps -ax | grep -v grep | grep mongo
DCaugs

34

mongodbが実行されているかどうかをすばやく確認するために、この簡単なncトリックで通知します。

nc -zvv localhost 27017

上記のコマンドは、ローカルホストのデフォルトポートで実行していることを前提としています。

自動起動するには、このスレッドを確認することをお勧めします。


1
はい、これは何かがポートをリッスンしているかどうかを確認するだけで機能します。その場合、出力にはまたはが含まれ27017 openますConnection refused
Alexander


9

mongodbの現在の実行ステータスを確認するには、次のコマンドを使用します。 sudo service mongodb status


8

正解です。シェルを閉じるとMongoDBが停止します。使用してみてください--fork代わりにデーモンとして実行するmongodプロセスコマンドライン引数を。私はUnixの第一人者ではありませんが、マシンの起動時に自動的に起動する方法が必要だと確信しています。

例えば

mongod --fork --logpath /var/log/mongodb.log --logappend

Mongoの起動と停止に関する完全なドキュメントを確認してください。


ありがとう。私はこれを手に入れました:[root@xxx lib]# ./mongodb-linux-i686-1.6.5/bin/mongod --fork --logpath /var/log/m ongodb.log --logappend all output going to: /var/log/mongodb.log forked process: 7518それでも私がシェルを閉じて新しいシェルを開くとき、私は得ますConnect failed

うーん、私には有効です(Ubuntu 64ビットVM、Mongo v1.7.6)ので、なぜそれがあなたに合わないのかわかりません 機能しない場合は、mongodbフォーラムに投稿することをお勧めします:groups.google.com/group/mongodb-user
AdaTheDev

しかし、私はそれを&で始めましたが、今はプロセスIDを見つけることができません。
bobobobo 2014年

@bobobobo-プロセスIDをどのように見つけようとしていますか?
Tass

ps -e | grep mongod
bobobobo 2014年

3

以下のコマンドを使用して、MongoDBのステータスを確認できます。例:sudo service MongoDB statusMongoDBサービスのステータスをスクリーンショットのように表示します。

MongoDBのステータス


2

おそらく、開発サーバーを適切にシャットダウンしなかったためか、同様の理由で。これを修正するには、ロックを解除し、次のコマンドでサーバーを起動します。 sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


1

これはphp用ですが、nodeの解決策を探してここに来ました。mongoskinの使用:

mongodb.admin().ping(function(err) {
    if(err === null)
        // true - you got a conntion, congratulations
    else if(err.message.indexOf('failed to connect') !== -1)
        // false - database isn't around
    else
        // actual error, do something about it
})

他のドライバーを使用すると、接続を確立しようとすることができ、接続に失敗した場合は、mongoサーバーがダウンしていることがわかります。Mongoskinは遅延して接続するため、実際にはpingなどの呼び出しを行う必要があります。PHPの場合、try-to-connectメソッドを使用できます。台本を作ろう!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.