给定一个干净的mongo数据目录,我运行这样的启动脚本(我意识到我可以使用service
,但这是一个不同的问题,并且我正在使用此脚本作为变通方法):
>$ cat startMongo.sh
nohup sudo mongod --rest --fork --config /etc/mongod.conf > logs/mongo.log 2>&1 &
问题在于这以某种方式启动了许多过程:
>$ ps -efw | grep mongo
root 7038 1 0 21:29 pts/0 00:00:00 sudo mongod --rest --fork --config /etc/mongod.conf
root 7039 7038 0 21:29 pts/0 00:00:00 mongod --rest --fork --config /etc/mongod.conf
root 7040 7039 0 21:29 ? 00:00:00 mongod --rest --fork --config /etc/mongod.conf
root 7041 7040 10 21:29 ? 00:00:01 mongod --rest --fork --config /etc/mongod.conf
我认为这是在Mongo进行一些预分配的同时发生的,我可以在日志文件中看到这些分配。片刻之后,do消失了:
>$ ps -efw | grep mongo
root 7041 1 4 21:29 ? 00:00:01 mongod --rest --fork --config /etc/mongod.conf
我的问题是这是否应该发生?我在Windows中尝试了相同的操作,但未发现问题。我确信这直到最近都没有在Ubuntu中体现出来(我从2.6升级到3)。
我试着跑步mongod --fork
,得到了:
about to fork child process, waiting until server is ready for connections.
我猜这意味着主进程在实际派发给最终的侦听器流程之前会做一些事情,而这些事情可能是在分配日志文件。我还得到了您正在描述的多进程状态。
我尝试了相同的命令,--fork
并且没有任何额外的过程。
因此,您认为正确的是,所产生的多余mongod
部分用于预分配,但仅在--fork
模式下进行。
无论如何,此时使用nohup
是没有用的,因为如果在运行mongo时--fork
也将其发送到后台模式:您的nohup日志将仅记录类似以下内容的内容:
about to fork child process, waiting until server is ready for connections.
forked process: 7306
child process started successfully, parent exiting
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句