我目前正在编写流程管理软件。我们使用的一个包是 mongo。
与启动 mongo 有什么区别
mongod --fork --logpath=/my/path/mongo.log --logappend
Run Code Online (Sandbox Code Playgroud)
和
nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)
?
我的第一个想法是 --fork 可以产生更多的进程和/或线程,有人建议我 --fork 可以用于更改有效用户(降级权限)。但是我们都在同一个用户下运行(进程管理器和mongod),那么还有其他区别吗?
谢谢
不同的是,与
mongod --fork --logpath=/my/path/mongo.log
Run Code Online (Sandbox Code Playgroud)
Mongo 本身对进程进行分叉,因此它可以作为守护进程运行。这是预期的方式,因为 mongo 可能会在 fork 新进程之前做一些事情。
和
nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)
Mongo 不知道它是分叉的。
我会说让服务器软件进行分叉总是更好的,这样它就可以进行优化。NoHUP 仅适用于没有分叉选项的软件。