¿Se está ejecutando mongodb?

117

He instalado mongodb y los controladores php en mi servidor Unix.

Mi pregunta es ¿cómo puedo saber si mongodb se está ejecutando? ¿Existe una consulta de línea de comando simple para verificar el estado? Si lo inicio una vez desde el shell, seguirá ejecutándose si salgo del shell (este no parece ser el caso). ¿Cómo puedo hacer que la conexión mongodb sea persistente y se inicie automáticamente al reiniciar el servidor?

Puedo correr:

-bash-3.2 $ su
Contraseña:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6. 5 / bin / mongod --help para obtener ayuda y opciones de inicio
Mié 23 de febrero 08:06:54 MongoDB comenzando: pid = 7271 puerto = 27017 dbpath = / data / db / 32-bit

** NOTA: cuando usa MongoDB de 32 bits, está limitado a aproximadamente 2 gigabytes de datos
** consulte http://blog.mongodb.org/post/137788967/32-bit-limitations

** ADVERTENCIA: está ejecutando OpenVZ. ¡Se sabe que esto está roto!

Mié 23 de febrero 08:06:54 db versión v1.6.5, versión pdfile 4.5
Mié 23 de febrero 08:06:54 versión de git: 0eb017e9b2828155a67c5612183337b89e12e291
Mié 23 de febrero 08:06:54 Información del sistema: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP Vie
15 de febrero 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Mié 23 de febrero 08:06:54 [initandlisten] esperando conexiones en el puerto 27017
Mié 23 de febrero 08: 06:54 [websvr] interfaz de administración web escuchando en el puerto 28017

Si abro una carcasa separada, puedo conectarme a mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Versión de shell de MongoDB: 1.6.5
conectando a: test
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

Sin embargo, si cierro el shell inicial, no puedo conectarme:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Versión de shell de MongoDB: 1.6.5
conectando a: prueba
Mié 23 de febrero 08:25:10 Error : no se pudo conectar al servidor 127.0.0.1 (anon): 1154
excepción: la conexión falló

Comunidad
fuente

Respuestas:

144

consulte con:

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

o

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

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

o

   service mongod status

para ver si mongod se está ejecutando (debe ser root para hacer esto, o prefijar todo con sudo). Tenga en cuenta que el comando 'grep' siempre aparecerá también como un proceso separado.

verifique el archivo de registro /var/log/mongo/mongo.log para ver si hay algún problema informado

Tilo
fuente
20
debe ser: estado de servicio mongodb
MhdSyrwan
12
También puede hacer un pgrep mongo.
slm
1
Recibí esto: 501 5365 418 0 4:10 pm ttys000 0: 00.00 grep mongo, ¿eso significa que se está ejecutando?
L1ghtk3ira
1
el estado del servicio mongod no funcionó para mí, pero el estado del servicio mongodb sí funcionó.
viks
5
de mongo 2.6 el servicio es mongod antes su mongodb, confuso sí
tsukimi
40

Encuentro:

ps -ax | grep mongo

Para ser mucho más consistente. El valor devuelto se puede utilizar para detectar cuántas instancias de mongod se están ejecutando

Mark Gia Bao Nguyen
fuente
6
Además, es posible que desee considerar agregar un filtro para no devolver el proceso grep que está ejecutando. Entonces: ps -ax | grep -v grep | grep mongo
DCaugs
34

Para comprobar rápidamente si mongodb se está ejecutando, este truco rápido de nc te lo hará saber.

nc -zvv localhost 27017

El comando anterior asume que lo está ejecutando en el puerto predeterminado en localhost.

Para iniciarlo automáticamente, es posible que desee ver este hilo .

PiyushW
fuente
1
Sí, esto funciona si solo se comprueba si algo está escuchando el puerto. Si ese es el caso, la salida contendrá 27017 open, o bien Connection refused.
Alexander
12

esto debería funcionar bien ...

pgrep mongod

Vinu Joseph
fuente
9

Para verificar el estado de ejecución actual del uso de mongodb: sudo service mongodb status

magma
fuente
8

Correcto, cerrar el shell detendrá MongoDB. Intente usar la --forklínea de comando arg para el proceso mongod, lo que hace que se ejecute como un demonio. No soy un gurú de Unix, pero estoy seguro de que debe haber una forma de que se inicie automáticamente cuando la máquina se inicie.

p.ej

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

Consulte la documentación completa sobre cómo iniciar y detener Mongo .

AdaTheDev
fuente
Gracias. Obtuve esto: [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: 7518pero aún así cuando cierro el shell y abro uno nuevo, obtengoConnect failed
hmm, funciona para mí (Ubuntu 64bit VM, Mongo v1.7.6), así que no estoy seguro de por qué no es para ti tbh. Si no puede hacerlo funcionar, lo mejor puede ser publicarlo en los foros de mongodb
AdaTheDev
Pero comencé con &, y ahora no puedo encontrar el processid.
bobobobo
@bobobobo: ¿cómo intentas encontrar el ID del proceso?
Tass
ps -e | grep mongod
bobobobo
3

Puede usar el siguiente comando para verificar el estado de MongoDB, por ejemplo: sudo service MongoDB statusque muestra el estado del servicio MongoDB como en la captura de pantalla:

Estado de MongoDB

Suneth
fuente
2

Probablemente porque no cerré mi servidor de desarrollo correctamente o por una razón similar. Para solucionarlo, quite el bloqueo e inicie el servidor con: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb

G Kiran Kumar Reddy
fuente
1

Sé que esto es para php, pero llegué aquí buscando una solución para node. Usando 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
})

Con otros controladores, puede intentar establecer una conexión y, si falla, sabrá que el servidor mongo está inactivo. Mongoskin necesita hacer alguna llamada (como ping) porque se conecta de forma perezosa. Para php, puede usar el método try-to-connect. ¡Haz un guión!

PHP:

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