如何在UNIX(Mac OSX)上的后台运行mongod?


50

我想在后台运行mongod是一件经常出现的事情。最好的方法是什么?有点像我可以在启动时运行MySQL的方式,并且它总是在后台运行。也许这只是一些bash脚本,但是很高兴听到是否有更好的方法。如果只是猛击-那会是什么样?谢谢。


1
npm install pm2 -g+ pm2 start mongod+ pm2 save是一种很好的跨平台方法,可确保任何后台进程在会话之间运行。
Jthorpe

Answers:


81

MongoDB守护程序(mongod)具有命令行选项,可在后台运行服务器...

--fork

此命令行选项要求您还指定一个文件来记录消息(因为它不能使用当前控制台)。该命令的示例如下所示:

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

您可以将其放入/etc/init.d/mongod bash脚本文件中。然后,要使服务在启动时运行,请在/etc/rc#.d/中创建标准的符号链接(S ##和K ##)。这是一个教程,更详细地说明了此过程。向下滚动到标题为“初始化脚本激活”的部分。这还具有执行以下命令的额外好处:

service mongod status
service mongod start
service mongod stop

我似乎无法在Windows中执行此操作。
Malik Brahimi


./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db为我工作
Selvakumar Esra

如果您不想创建额外的日志文件,则还可以选择将--syslog所有内容都写入系统日志中。
马库斯·格拉夫

@杰西·韦伯 在注销后,例如ssh连接,它将继续运行吗?
米格尔(Miguel),

11

由于您使用的是Mac,因此应使用Homebrew安装MongoDB(如果尚未安装,则需要安装Homebrew):

brew install mongodb

假设安装的版本名为2.0.6-x86_64。然后添加它为您生成的LaunchAgent plist文件:

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

mongod现在和每次重新启动计算机时,它将在后台启动。


1
更新: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


0

传统上,要在后台运行,只需从
nohup some_command 开始 -要启动&
,即为nohup&,然后将要运行的命令放在nohup和&之间。它会像您一样运行,在您关闭终端或注销后它将继续运行。您可以通过sudo以其他用户身份启动它。要使其在启动时运行,请将其添加到init脚本替换中(不知道他们叫什么)。它将所有输出写入启动它的文件nohup.out。


0

使程序在OS X上启动时运行的最佳方法是创建LaunchDaemon(请参阅Apple的文档,并查看/ System / Library / LaunchDaemons中Apple提供的某些守护程序)并将其安装在/ Library中。 / LaunchDaemons。 Lingon可以帮助您创建.plist文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.