Comment puis-je exécuter mongod en arrière-plan sous unix (mac osx)?

50

Je voudrais lancer Mongod en arrière-plan comme une chose toujours présente. Quelle serait la meilleure façon de faire cela? Un peu comme la façon dont je peux exécuter MySQL au démarrage et qui fonctionne toujours en tâche de fond. Peut-être que ce ne sont que quelques scripts bash, mais il serait bon d’entendre s’il existe un meilleur moyen. Si c'est juste bash - à quoi cela ressemblerait-il? Merci.

Ryan Montgomery
la source
1
npm install pm2 -g+ pm2 start mongod+ pm2 saveEst une façon multi - plateforme agréable de garder tout processus d'arrière - plan en cours d' exécution à travers des sessions.
Jthorpe

Réponses:

81

Le démon MongoDB (mongod) a une option de ligne de commande pour exécuter le serveur en arrière-plan ...

--fork

Cette option de ligne de commande nécessite que vous spécifiiez également un fichier dans lequel enregistrer les messages (car elle ne peut pas utiliser la console actuelle). Un exemple de cette commande ressemble à ceci:

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

Vous pouvez le placer dans un fichier de script /etc/init.d/mongod bash. Et pour que le service s'exécute au démarrage, créez les liens symboliques standard (S ## & K ##) dans /etc/rc#.d/. Voici un tutoriel qui explique ce processus plus en détail. Faites défiler jusqu'à la section intitulée "Activation du script d'initialisation". Cela présente également l’avantage supplémentaire de pouvoir exécuter des commandes telles que ...

service mongod status
service mongod start
service mongod stop
Jesse Webb
la source
Je n'arrive pas à faire cela sous Windows.
Malik Brahimi
@MalikBrahimi Voir stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db a fonctionné pour moi
Selvakumar Esra 26/03/2017
Si vous ne souhaitez pas créer de fichier journal supplémentaire, il existe également une option --syslogdans laquelle tout est simplement écrit dans le journal système.
Markus Graf
@ Jesse Webb. Et va-t-il continuer à fonctionner après ma déconnexion, par exemple, la connexion SSH?
Miguel
11

Puisque vous êtes sur un Mac, vous devez utiliser Homebrew pour installer MongoDB (vous devrez installer Homebrew si vous ne l’avez pas encore fait):

brew install mongodb

Disons que la version installée est nommée 2.0.6-x86_64. Ajoutez ensuite le fichier plist LaunchAgent qu’il génère pour vous:

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

Cela se lancera mongoden arrière-plan maintenant et chaque fois que vous redémarrez votre ordinateur.

Andrew
la source
1
mise à jour: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

essayez d'exécuter la commande suivante:

mongod --fork --syslog
Pedro Luz
la source
0

Classiquement, pour exécuter en arrière-plan, commencez simplement par
nohup some_command -to launch &
Donc c'est nohup &, placez la commande que vous voulez exécuter en arrière-plan entre nohup et &. Il fonctionnera comme vous, il continuera à fonctionner après la fermeture du terminal ou la déconnexion. Vous pouvez le lancer en tant qu’autre utilisateur via sudo. Pour le faire fonctionner au démarrage, ajoutez-le au remplacement des scripts d'initialisation (vous ne savez pas comment ils l'appellent). Il écrira toute sortie dans un fichier où vous avez commencé, appelé nohup.out

Ronald Pottol
la source
0

Le meilleur moyen d’exécuter un programme au démarrage sous OS X consiste à créer un LaunchDaemon (voir la documentation d’Apple et à consulter certains des démons fournis par Apple dans / System / Library / LaunchDaemons) et à l’installer dans / Library. / LaunchDaemons. Lingon peut vous aider à créer le fichier .plist.

Gordon Davisson
la source