wake-up-neo.net

Läuft Mongodb?

Ich habe Mongodb und die PHP-Treiber auf meinem Unix-Server installiert.

Meine Frage ist, wie kann ich feststellen, ob Mongodb ausgeführt wird? Gibt es eine einfache Befehlszeilenabfrage, um den Status zu überprüfen? Wenn ich es einmal von der Shell aus starte, läuft es weiter, wenn ich die Shell verlasse (dies scheint nicht der Fall zu sein). Wie kann ich die Mongodb-Verbindung dauerhaft machen und beim Neustart des Servers automatisch starten?

Ich kann rennen:

-bash-3.2 $ su
Passwort:
[root @ xxx] # cd/var/lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./ mongodb-linux-i686-1.6.5/bin/mongod - Hilfe und Startoptionen
Mi 23 Feb 08:06:54 MongoDB wird gestartet: pid = 7271 port = 27017 dbpath =/data/db/32-bit

** HINWEIS: Wenn Sie MongoDB 32-Bit verwenden, sind Sie auf ca. 2 Gigabyte Daten beschränkt
** siehe http://blog.mongodb.org/post/137788967/32-bit-limitations

** WARNUNG: Sie führen OpenVZ aus. Das ist bekanntermaßen kaputt !!!

Wed Feb 23 08:06:54 db version v1.6.5, pdfile version 4.5
Mi Feb 23 08:06:54 git version: 0eb017e9b2828155a67c5612183337b89e12e291
Mi 23 Feb 08:06:54 sys info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen # 1 SMP Fr
15. Februar 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Mi 23 Feb 08:06:54 [initandlisten] Warten auf Verbindungen auf Port 27017
Mi 23 Feb 08:06:54 [websvr] Webadministrator-Oberfläche lauscht auf Port 28017

Wenn ich eine separate Shell öffne, kann ich mich mit mongodb verbinden:

-bash-3.2 $ cd/var/lib
- bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB Shell Version: 1.6.5
Verbindung herstellen mit: test
db.foo.find ()
{"_id": ObjectId ("4d63d7d3eb95985ab19c8feb"), "a": 1}

Wenn ich jedoch die anfängliche Shell schließe, kann ich keine Verbindung herstellen:

-bash-3.2 $ cd/var/lib
- bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB Shell Version: 1.6.5
Verbindung herstellen mit: test
Mi Feb 23 08:25:10 Fehler: Es konnte keine Verbindung zum Server 127.0.0.1 (anon): 1154 hergestellt werden
Ausnahme: Verbindung fehlgeschlagen

103
user623520

überprüfen Sie entweder mit:

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

oder

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

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

oder

   service mongod status

um zu sehen, ob mongod ausgeführt wird (Sie müssen root sein, um dies zu tun, oder alles mit Sudo voranstellen). Bitte beachten Sie, dass der Befehl 'grep' immer auch als separater Prozess angezeigt wird.

überprüfen Sie die Protokolldatei /var/log/mongo/mongo.log, um festzustellen, ob Probleme gemeldet wurden

135
Tilo

Ich finde:

ps -ax | grep mongo

Um viel konsequenter zu sein. Der zurückgegebene Wert kann verwendet werden, um zu ermitteln, wie viele Instanzen von mongod ausgeführt werden

37

Mit diesem Trick können Sie schnell überprüfen, ob Mongodb ausgeführt wird.

nc -zvv localhost 27017

Der obige Befehl setzt voraus, dass Sie ihn auf dem Standardport von localhost ausführen.

Um es automatisch zu starten, solltest du dir diesen Thread ansehen.

29
PiyushW

Wenn Sie die Shell schließen, wird MongoDB gestoppt. Versuchen Sie es mit dem --fork Befehlszeilenargument für den Mongod-Prozess, wodurch er stattdessen als Daemon ausgeführt wird. Ich bin kein Unix-Guru, aber ich bin mir sicher, dass es eine Möglichkeit geben muss, es automatisch zu starten, wenn die Maschine hochfährt.

z.B.

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

Lesen Sie die vollständige Dokumentation zu Starten und Stoppen von Mongo .

8
AdaTheDev

das sollte gut funktionieren ...

pgrep mongod

8
Vinu Joseph

Um den aktuellen Status von Mongodb zu überprüfen, verwenden Sie: Sudo service mongodb status

6
magma

Wahrscheinlich, weil ich meinen Entwickler-Server nicht richtig heruntergefahren habe oder aus einem ähnlichen Grund. Um dies zu beheben, entfernen Sie die Sperre und starten Sie den Server mit: Sudo rm /var/lib/mongodb/mongod.lock ; Sudo start mongodb

2

Ich weiß, dass dies für PHP ist, aber ich habe hier nach einer Lösung für Node gesucht. Mongoskin benutzen:

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
})

Mit anderen Treibern können Sie versuchen, eine Verbindung herzustellen. Wenn dies fehlschlägt, wissen Sie, dass der Mongo-Server nicht funktioniert. Mongoskin muss tatsächlich einen Anruf tätigen (wie Ping), da die Verbindung nur schleppend hergestellt werden kann. Für PHP können Sie die Methode try-to-connect verwenden. Mach ein Drehbuch!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
1
B T