web-dev-qa-db-fra.com

Comment puis-je exécuter mongodb en arrière-plan sur unix (mac os x)?

Je voudrais exécuter 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 il est toujours là en arrière-plan. Peut-être que ce ne sont que quelques scripts bash, mais ce serait bien d'entendre s'il y a une meilleure façon. Si c'est juste bash - à quoi cela ressemblerait-il? Merci.

53
Ryan Montgomery

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écifiez également un fichier dans lequel enregistrer les messages (car il ne peut pas utiliser la console actuelle). Un exemple de cette commande ressemble à:

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

Vous pouvez mettre ceci dans un fichier de script bash /etc/init.d/mongod. Et puis pour que le service s'exécute au démarrage, créez les liens symboliques standard (S ## & K ##) à l'intérieur de /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 init". Cela a également l'avantage supplémentaire de pouvoir exécuter des commandes comme ...

service mongod status
service mongod start
service mongod stop
85
Jesse Webb

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

Supposons que la version installée s'appelle 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 lancera mongod en arrière-plan maintenant et à chaque redémarrage de votre ordinateur.

11
Andrew

essayez d'exécuter la commande suivante:

mongod --fork --syslog
6
Pedro Luz

Classiquement, pour fonctionner en arrière-plan, commencez simplement par
Nohup some_command -pour lancer &
Voilà donc Nohup &, mettez la commande que vous souhaitez 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 démarrer en tant qu'autre utilisateur via Sudo. Pour le faire fonctionner au démarrage, ajoutez-le au remplacement des scripts init (je ne sais pas comment ils l'appellent). Il écrira toute sortie dans un fichier où vous l'avez appelé Nohup.out

0
Ronald Pottol

La meilleure façon de faire fonctionner un programme au démarrage sur OS X est de créer un LaunchDaemon (voir documentation d'Apple , et jetez un œil à certains des démons fournis par Apple dans/System/Library/LaunchDaemons ) et installez-le dans/Library/LaunchDaemons. Lingon peut vous aider à créer le fichier .plist.

0
Gordon Davisson