web-dev-qa-db-ja.com

mongodbは実行中ですか?

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および起動オプションのヘルプ
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
Wed Feb 23 08:06:54 git version:0eb017e9b2828155a67c5612183337b89e12e291
Wed Feb 23 08:06:54 sys info:Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen#1 SMP Fri
Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Wed Feb 23 08:06:54 [initandlisten]ポート27017での接続待機
Wed Feb 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
接続先:テスト
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
接続先:テスト
Wed Feb 23 08:25:10 Error:サーバーに接続できませんでした127.0.0.1(anon):1154
exception:接続に失敗しました

101
user623520

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

   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をチェックして、問題が報告されているかどうかを確認します。

134
Tilo

私が見つけます:

ps -ax | grep mongo

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

37

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

nc -zvv localhost 27017

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

自動起動するには、 このスレッド をご覧ください。

28
PiyushW

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

例えば.

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

Mongoの起動と停止 の完全なドキュメントをご覧ください。

8
AdaTheDev

これはうまくいくはずです...

pgrep mongod

8
Vinu Joseph

Mongodbの現在の実行ステータスを確認するには、Sudo service mongodb statusを使用します

5
magma

おそらく、開発サーバーを適切にシャットダウンしなかった、または同様の理由によるものと思われます。修正するには、ロックを解除し、サーバーを次のように起動します:Sudo rm /var/lib/mongodb/mongod.lock ; Sudo start mongodb

2

私はこれがPHP用であることを知っていますが、ここでノードの解決策を探しました。モンゴスキンの使用:

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
}
1
B T