Läuft Mongodb?


115

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

Meine Frage ist, wie kann ich feststellen, ob Mongodb läuft? 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 für Hilfe und Startoptionen
Mi Feb 23 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 laufen in OpenVZ. Dies ist bekanntermaßen kaputt !!!

Mi 23 Feb 08:06:54 db version v1.6.5, pdfile version 4.5
Mi Feb 23 08:06:54 git version: 0eb017e9b2828155a67c5612183337b89e12e291
Mi Feb 23 08:06:54 sys info: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP Fr
15 Feb 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] Webadministrationsschnittstelle überwacht Port 28017

Wenn ich eine separate Shell öffne, kann ich mich dann 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 zu: test
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

Wenn ich jedoch die ursprü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 zu: test
Mi Feb 23 08:25:10 Fehler : Verbindung zum Server 127.0.0.1 konnte nicht hergestellt werden (anon): 1154
Ausnahme: Verbindung fehlgeschlagen

Antworten:


143

Überprüfen Sie mit entweder:

   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 läuft (dazu musst du root sein oder alles voranstellen sudo). 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


19
sollte sein: Service Mongodb Status
MhdSyrwan

12
Sie können auch eine pgrep mongo.
Slm

1
Ich habe folgendes: 501 5365 418 0 4:10 pm ttys000 0: 00.00 grep mongo, heißt das, dass es läuft?
L1ghtk3ira

1
Service Mongod Status hat bei mir nicht funktioniert, aber Service Mongodb Status wird funktioniert.
Viks

5
ab mongo 2.6 ist der service mongod früher sein mongodb, verwirrend ja
tsukimi

40

Ich finde:

ps -ax | grep mongo

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


6
Möglicherweise möchten Sie auch einen Filter hinzufügen, um den von Ihnen ausgeführten grep-Prozess nicht zurückzugeben. Also: ps -ax | grep -v grep | grep
mongo

34

Mit diesem schnellen NC-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.

Zum automatischen Starten sollten Sie sich diesen Thread ansehen .


1
Ja, dies funktioniert, wenn nur überprüft wird, ob etwas den Port abhört. In diesem Fall enthält die Ausgabe 27017 openoder Connection refused.
Alexander


9

Um den aktuellen Betriebsstatus von mongodb zu überprüfen, verwenden Sie: sudo service mongodb status


8

Richtig, das Schließen der Shell stoppt MongoDB. Versuchen Sie, das --forkBefehlszeilenargument für den Mongod-Prozess zu verwenden, der stattdessen als Daemon ausgeführt wird. Ich bin kein Unix-Guru, aber ich bin mir sicher, dass es eine Möglichkeit geben muss, ihn automatisch zu starten, wenn die Maschine hochfährt.

z.B

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

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


Vielen Dank. Ich habe folgendes: [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: 7518aber immer noch, wenn ich die Shell schließe und eine neue Connect failed

hmm, funktioniert für mich (Ubuntu 64bit VM, Mongo v1.7.6), also bin ich mir nicht sicher, warum es nicht für dich ist, tbh. Wenn Sie es nicht zum Laufen bringen können, veröffentlichen Sie es am besten in den Mongodb-Foren: groups.google.com/group/mongodb-user
AdaTheDev

Aber ich habe damit angefangen &und jetzt kann ich die Prozess-ID nicht finden.
Bobobobo

@bobobobo - wie versuchst du die Prozess-ID zu finden?
Tass

ps -e | grep mongod
Bobobobo

3

Mit dem folgenden Befehl können Sie den MongoDB-Status überprüfen, z. B.: sudo service MongoDB statusDer Status des MongoDB-Dienstes wird wie im Screenshot angezeigt:

MongoDB-Status


2

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


1

Ich weiß, dass dies für PHP ist, aber ich habe hier nach einer Lösung für Knoten gesucht. Mit 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
})

Mit anderen Treibern können Sie versuchen, eine Verbindung herzustellen. Wenn dies fehlschlägt, wissen Sie, dass der Mongo-Server ausgefallen ist. Mongoskin muss tatsächlich einen Anruf tätigen (wie Ping), weil es sich träge verbindet. Für PHP können Sie die Try-to-Connect-Methode verwenden. Mach ein Skript!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.