使用start-stop-daemon时无法多次启动mongodb?

时间:2012-05-19 20:54:41

标签: mongodb start-stop-daemon

我一直在同一台服务器上启动多个mongod进程来测试复制集(因为使用多个服务器的成本更高,而我现在只是在测试)。

但是,由于我已经将mongo更新到版本v2.0.5,当我尝试再次启动mongod时(在另一个端口上,使用另一个数据库文件夹等),我得到以下内容:

mongod already running

为什么会这样?是否有一个标志可以跳过此检查?

更新:出于某种原因,只有在我这样运行mongod时才会发生这种情况:

sudo start-stop-daemon --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

不幸的是,我必须使用start-stop-daemon在Ubuntu 10.04 LTS上的upstart脚本中使用。为什么会导致这个问题?

在阅读start-stop-daemon的联机帮助页后,很明显有意无意再次启动该过程,因为它认为它是相同的“服务”。但是,我只使用start-stop-daemon,因此我可以使用Upstart作为其他用户运行。是否可以绕过检查,或以不同的方式在upstart中以非sudo用户身份运行?

3 个答案:

答案 0 :(得分:1)

可能的解决方案: 您需要使用start-stop-daemon的key --name为不同的进程提供不同的名称。 例如,对于node.js:

start-stop-daemon --name node-charts --start --exec /usr/bin/node -- someapp.js

start-stop-daemon --name node-web --start --exec /usr/bin/node -- someotherapp.js

没有名称它将无法启动,因为它具有相同的/ usr / bin / node进程名称。

答案 1 :(得分:0)

这是start-stop-daemon的一个功能,我与upstart一起用作另一个用户。

不使用start-stop-daemon,此问题已得到解决。在我的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

答案 2 :(得分:-1)

这是因为正在运行的mongod已存在pid文件。

使用不同的pid和start-stop-daemon。例如,

sudo start-stop-daemon --start --pid=/var/run/mongodb2.pid --chuid mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb2.conf

所以它不会抱怨“/ usr / bin / mongod已经在运行”