使用启动-停止守护程序时无法多次启动mongodb?
我一直在通过在同一台服务器上启动多个使用启动-停止守护程序时无法多次启动mongodb?,mongodb,start-stop-daemon,Mongodb,Start Stop Daemon,我一直在通过在同一台服务器上启动多个mongod进程来测试ReplicaSet(因为使用多个服务的成本更高,我只是在这一点上进行测试) 但是,由于我已将mongo更新为v2.0.5版,因此当我再次尝试启动mongod(在另一个端口上,使用另一个数据库文件夹等)时,我得到了以下信息: mongod已在运行 为什么会这样?是否有跳过此支票的标志 更新:出于某种原因,这只在我运行mongod时发生,如下所示: sudo启动停止守护程序--start-c mainuser--exec/usr/local
mongod
进程来测试ReplicaSet(因为使用多个服务的成本更高,我只是在这一点上进行测试)
但是,由于我已将mongo更新为v2.0.5版,因此当我再次尝试启动mongod(在另一个端口上,使用另一个数据库文件夹等)时,我得到了以下信息:
mongod已在运行
为什么会这样?是否有跳过此支票的标志
更新:出于某种原因,这只在我运行mongod
时发生,如下所示:
sudo启动停止守护程序--start-c mainuser--exec/usr/local/bin/mongod--journal--nohttpinterface--dbpath/home/mainuser/data/db secondary--logpath/home/mainuser/data/logs/mongodb-secondary.log--logappend--replSet appname--port 30001
当我这样运行它时,它不会发生:
sudo/usr/local/bin/mongod--journal--nohttpinterface--dbpath/home/mainuser/data/db secondary--logpath/home/mainuser/data/logs/mongodb-secondary.log--logappend--replSet appname--port 30001
不幸的是,我不得不在Ubuntu 10.04 LTS上的upstart脚本中使用启动-停止守护程序。为什么会引起这个问题
阅读start-stop-daemon
的手册页后,很明显,它故意不尝试再次启动该进程,因为它将其识别为相同的“服务”。但是,我只使用了start-stop守护进程
,这样我就可以用Upstart作为不同的用户运行。是否可以绕过检查,或者以不同的方式在upstart中以非sudo用户的身份运行?这是启动-停止守护程序的一个功能,我在upstart中使用它作为另一个用户运行
通过不使用启动-停止守护程序
,此问题已得到解决。在我的upstart脚本中,我现在使用sudo
作为主用户运行:
sudo -u mainuser /usr/local/bin/mongod --journal --nohttpinterface --dbpath /home/mainuser/data/db-secondary --logpath /home/mainuser/data/logs/mongodb-secondary.log --logappend --replSet appname --port 30001
这是因为运行mongod的pid文件已经存在
只需对启动-停止守护进程使用不同的pid即可。比如说,
sudo start-stop-daemon --start --pid=/var/run/mongodb2.pid --chuid mongodb --exec /usr/bin/mongod -- --config /etc/mongodb2.conf
因此,它不会抱怨“/usr/bin/mongod已经在运行”可能的解决方案:
您需要使用start-stop守护进程的key--name为不同的进程指定不同的名称。
例如,对于node.js:
start-stop守护进程--名称节点图表--start--exec/usr/bin/node--someapp.js
及
start-stop守护进程--命名节点web--启动--exec/usr/bin/node--someotherapp.js
如果没有名称,它将不会启动,因为它具有相同的/usr/bin/node进程名称。Hmm。。我遇到了与op相同的问题,并且/var/run中没有mongodb.pid文件。。不过,我确实运行了另一个mongodb(从命令行)。当我停止该进程时,我能够使用start-stop守护进程
(由sudo-start-mongodb
使用)。在安装了apt的mongodb(1:2.0.6-1ubuntu4)的情况下,init脚本没有--pid
选项,但是有--exec/usr/bin/mongod
-这意味着如果mongod
可执行文件在系统的任何地方运行,init脚本将不会启动它。参数是--pidfile