¿Cómo puedo ejecutar mongod en segundo plano en unix (mac osx)?

50

Me gustaría ejecutar mongod en segundo plano como algo siempre presente. Cuál sería la mejor forma de hacer esto? Algo así como la forma en que puedo ejecutar MySQL al inicio y siempre está ahí ejecutándose en segundo plano. Tal vez son solo algunos scripts de bash, pero sería bueno saber si hay una mejor manera. Si es solo bash, ¿cómo sería? Gracias.

Ryan Montgomery
fuente
1
npm install pm2 -g+ pm2 start mongod+ pm2 savees una buena forma multiplataforma para mantener cualquier proceso en segundo plano ejecutándose en sesiones.
Jthorpe

Respuestas:

81

El demonio MongoDB (mongod) tiene una opción de línea de comandos para ejecutar el servidor en segundo plano ...

--fork

Esta opción de línea de comandos requiere que también especifique un archivo para registrar mensajes (ya que no puede usar la consola actual). Un ejemplo de este comando se ve así:

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

Puede poner esto en un archivo de script /etc/init.d/mongod bash. Y luego, para que el servicio se ejecute al inicio, cree los enlaces simbólicos estándar (S ## & K ##) dentro de /etc/rc#.d/. Aquí hay un tutorial que explica este proceso con más detalle. Desplácese hacia abajo hasta la sección titulada "Activación del script de inicio". Esto también tiene el beneficio adicional de poder ejecutar comandos como ...

service mongod status
service mongod start
service mongod stop
Jesse Webb
fuente
Parece que no puedo hacer esto en Windows.
Malik Brahimi
@MalikBrahimi Ver stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db funcionó para mí
Selvakumar Esra
Si no desea crear un archivo de registro adicional, también existe la opción --syslogen la que todo está escrito en el registro del sistema.
Markus Graf
@Jesse Webb. ¿Y seguirá ejecutándose después de cerrar sesión, por ejemplo, la conexión ssh?
Miguel
11

Como estás en una Mac, debes usar Homebrew para instalar MongoDB (necesitarás instalar Homebrew si aún no lo has hecho):

brew install mongodb

Digamos que la versión que se instaló se llama 2.0.6-x86_64. Luego agregue el archivo plist LaunchAgent que genera para usted:

mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mongodb/2.0.6-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Esto se iniciará mongoden segundo plano ahora y cada vez que reinicie su computadora.

Andrés
fuente
1
actualizado:mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mongodb/3.2.10/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
helsont
4

intente ejecutar el siguiente comando:

mongod --fork --syslog
Pedro Luz
fuente
0

Clásicamente, para ejecutar en segundo plano, simplemente comience con
nohup some_command -to launch &
Entonces eso es nohup &, coloque el comando que desea ejecutar en segundo plano entre nohup y &. Se ejecutará como usted, seguirá ejecutándose después de cerrar la terminal o cerrar sesión. Puede iniciarlo como otro usuario a través de sudo. Para que se ejecute al inicio, agréguelo al reemplazo de scripts de inicio (no sé cómo lo llaman). Escribirá cualquier salida en un archivo donde lo inició llamado nohup.out

Ronald Pottol
fuente
0

La mejor manera de hacer que un programa se ejecute al inicio en OS X es crear un LaunchDaemon (vea los documentos de Apple y eche un vistazo a algunos de los demonios suministrados por Apple en / System / Library / LaunchDaemons) e instálelo en / Library / LaunchDaemons. Lingon puede ayudarlo a crear el archivo .plist.

Gordon Davisson
fuente