Wie kann ich mongod unter Unix (Mac OSX) im Hintergrund ausführen?

50

Ich würde gerne mongod im Hintergrund laufen lassen, als eine immer anwesende Sache. Was wäre der beste Weg, dies zu tun? Irgendwie kann ich MySQL beim Start ausführen und es läuft immer im Hintergrund. Vielleicht sind es nur ein paar Bash-Skripte, aber es wäre schön zu hören, ob es einen besseren Weg gibt. Wenn es nur Bash ist - wie würde das aussehen? Vielen Dank.

Ryan Montgomery
quelle
1
npm install pm2 -g+ pm2 start mongod+ pm2 saveIst ein schöner Cross - Plattform - Weg , um alle Hintergrundprozesse über mehrere Sitzungen hinweg am Laufen zu halten.
Jthorpe

Antworten:

81

Der MongoDB-Dämon (Mongod) verfügt über eine Befehlszeilenoption, mit der der Server im Hintergrund ausgeführt werden kann.

--fork

Diese Befehlszeilenoption erfordert, dass Sie auch eine Datei angeben, in der Nachrichten protokolliert werden sollen (da die aktuelle Konsole nicht verwendet werden kann). Ein Beispiel für diesen Befehl sieht folgendermaßen aus:

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

Sie können dies in eine /etc/init.d/mongod bash-Skriptdatei einfügen. Wenn der Dienst beim Start ausgeführt werden soll, erstellen Sie die Standardsymbolverknüpfungen (S ## & K ##) in /etc/rc#.d/. In diesem Tutorial wird dieser Vorgang genauer erläutert. Scrollen Sie nach unten zum Abschnitt "Init Script Activation". Dies hat auch den zusätzlichen Vorteil, dass Befehle wie ...

service mongod status
service mongod start
service mongod stop
Jesse Webb
quelle
Ich kann das in Windows nicht tun.
Malik Brahimi
@MalikBrahimi Siehe stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db für mich gearbeitet
Selvakumar Esra
Wenn Sie keine zusätzliche Protokolldatei erstellen möchten, gibt es auch die Option --syslog, dass alles nur in das Systemprotokoll geschrieben wird.
Markus Graf
@ Jesse Webb. Und läuft es weiter, nachdem ich mich abgemeldet habe, zum Beispiel die ssh-Verbindung?
Miguel
11

Da Sie auf einem Mac arbeiten, sollten Sie zur Installation von MongoDB Homebrew verwenden (Sie müssen Homebrew installieren, wenn Sie dies noch nicht getan haben):

brew install mongodb

Angenommen, die installierte Version trägt den Namen 2.0.6-x86_64. Fügen Sie dann die LaunchAgent-Plist-Datei hinzu, die sie für Sie generiert:

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

Dies wird mongodjetzt und bei jedem Neustart des Computers im Hintergrund gestartet .

Andrew
quelle
1
aktualisiert: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

Führen Sie den folgenden Befehl aus:

mongod --fork --syslog
Pedro Luz
quelle
0


Um im Hintergrund ausgeführt zu werden, beginnen Sie klassisch mit nohup some_command -to launch &. Das heißt
also, nohup &, setzen Sie den Befehl, den Sie ausführen möchten, in den Hintergrund zwischen nohup und &. Es wird so ausgeführt, wie Sie es möchten. Es wird weiter ausgeführt, nachdem Sie das Terminal geschlossen oder sich abgemeldet haben. Sie können es als ein anderer Benutzer über sudo starten. Fügen Sie es zum Ersetzen der Init-Skripte hinzu, damit es beim Start ausgeführt wird (Sie wissen nicht, wie sie es nennen). Die Ausgabe wird in eine Datei mit dem Namen nohup.out geschrieben, in der Sie sie gestartet haben

Ronald Pottol
quelle
0

Die beste Möglichkeit, ein Programm beim Start unter OS X zum Laufen zu bringen, besteht darin, einen LaunchDaemon zu erstellen (siehe Apple-Dokumentation und einige der von Apple bereitgestellten Daemons in / System / Library / LaunchDaemons) und diesen in / Library zu installieren / LaunchDaemons. Lingon kann Ihnen beim Erstellen der .plist-Datei helfen.

Gordon Davisson
quelle