Назад | Перейти на главную страницу

вилка mongod против nohup

В настоящее время я пишу программное обеспечение для управления процессами. Один из используемых нами пакетов - mongo.

Есть ли разница между запуском mongo с помощью

mongod --fork --logpath=/my/path/mongo.log --logappend

и

nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &

?

Моя первая мысль заключалась в том, что --fork может порождать больше процессов и / или потоков, и мне было предложено, что --fork может быть полезен для смены эффективного пользователя (понижение привилегий). Но все мы запускаем под одним и тем же пользователем (диспетчер процессов и mongod), есть ли еще какая-то разница?

Спасибо

Разница в том, что с

mongod --fork --logpath=/my/path/mongo.log

Mongo сам разветвляет процесс, чтобы он мог работать как демон. Это предполагаемый способ, потому что mongo, вероятно, может что-то сделать до создания нового процесса.

С участием

nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &

Монго не знает, что это раздвоение.

Я бы сказал, что всегда лучше позволить серверному программному обеспечению выполнять разветвление, чтобы оно могло производить оптимизацию. NoHUP предназначен только для программного обеспечения, у которого нет возможности разветвления.

Я в целом согласен с ответом Кристофера П. (и проголосовал за него), но поговорим немного о параметре ведения журнала здесь. Первоначальное сканирование приведенных вами примеров предполагает, что в конечном итоге у вас будут лучшие варианты ведения журнала с версией nohup, чем версия --fork. Если вместо этого вы начали с:

mongod --fork --logpath=/my/path/mongo.log --logappend

Тогда у вас будет более близкий матч. Это также дает вам возможность довольно легко вращать файлы журнала (с помощью сигнала или команды):

http://www.mongodb.org/display/DOCS/Logging#Logging-Rotatingthelogfiles

В противном случае вам придется управлять всем этим самостоятельно, и процесс будет думать, что он регистрируется в stdout, а не в файле.

Не совсем то, о чем вы спрашивали, но еще несколько доказательств в пользу --fork.