Come posso eseguire mongod in background su unix (mac osx)?


50

Vorrei eseguire mongod in background come una cosa sempre presente. Quale sarebbe il modo migliore per farlo? Un po 'come il modo in cui posso eseguire MySQL all'avvio ed è sempre lì in esecuzione in background. Forse sono solo alcuni script bash, ma sarebbe bello sapere se esiste un modo migliore. Se è solo bash - come sarebbe? Grazie.


1
npm install pm2 -g+ pm2 start mongod+ pm2 saveè un bel modo multipiattaforma per mantenere in esecuzione qualsiasi processo in background tra le sessioni.
Jthorpe,

Risposte:


81

Il demone MongoDB (mongod) ha un'opzione da riga di comando per eseguire il server in background ...

--fork

Questa opzione della riga di comando richiede che tu specifichi anche un file in cui registrare i messaggi (poiché non può utilizzare la console corrente). Un esempio di questo comando è simile a:

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

Puoi metterlo in un file di script bash /etc/init.d/mongod. E quindi per far funzionare il servizio all'avvio, creare i collegamenti simbolici standard (S ## & K ##) all'interno di /etc/rc#.d/. Ecco un tutorial che spiega questo processo in modo più dettagliato. Scorri verso il basso fino alla sezione intitolata "Attivazione script iniziale". Questo ha anche l'ulteriore vantaggio di poter eseguire comandi come ...

service mongod status
service mongod start
service mongod stop

Non riesco a farlo in Windows.
Malik Brahimi,


./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db ha funzionato per me
Selvakumar Esra

Se non si desidera creare un file di registro aggiuntivo, esiste anche l'opzione --syslogin cui tutto è appena scritto nel registro di sistema.
Markus Graf,

@Jesse Webb. E continuerà a funzionare dopo il logout, ad esempio la connessione ssh?
Miguel,

11

Dato che sei su un Mac, dovresti usare Homebrew per installare MongoDB (dovrai installare Homebrew se non l'hai ancora fatto):

brew install mongodb

Supponiamo che la versione installata sia denominata 2.0.6-x86_64. Quindi aggiungi il file plist LaunchAgent che genera per te:

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

Questo verrà avviato mongodin background ora e ogni volta che riavvii il computer.


1
aggiornato: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

prova a eseguire il comando seguente:

mongod --fork --syslog

0

In genere, per eseguire in background, basta iniziare con
nohup some_command -to launch &
Quindi questo è nohup &, inserire il comando che si desidera eseguire in background tra nohup e &. Funzionerà come te, continuerà a funzionare dopo aver chiuso il terminale o disconnesso. È possibile avviarlo come un altro utente tramite sudo. Per farlo funzionare all'avvio, aggiungilo alla sostituzione degli script di init (non so come lo chiamano). Scriverà qualsiasi output in un file dove lo hai avviato chiamato nohup.out


0

Il modo migliore per eseguire un programma all'avvio su OS X è creare un LaunchDaemon (consultare i documenti di Apple e dare un'occhiata ad alcuni dei demoni forniti da Apple in / Sistema / Libreria / LaunchDaemons) e installarlo in / Libreria LaunchDaemons /. Lingon può aiutarti a creare il file .plist.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.