Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用启动-停止守护程序时无法多次启动mongodb?_Mongodb_Start Stop Daemon - Fatal编程技术网

使用启动-停止守护程序时无法多次启动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