Как я могу запустить mongod в фоновом режиме на Unix (Mac OSX)?

50

Я хотел бы запустить Mongod в фоновом режиме, как всегда присутствующие вещи. Каков был бы лучший способ сделать это? Вроде как я могу запустить MySQL при запуске, и он всегда работает в фоновом режиме. Может быть, это всего лишь несколько сценариев bash, но было бы неплохо услышать, если есть лучший способ. Если это просто bash - как бы это выглядело? Благодарю.

Райан Монтгомери
источник
1
npm install pm2 -g+ pm2 start mongod+ pm2 save- это хороший кроссплатформенный способ поддерживать любой фоновый процесс в сеансах.
Jthorpe

Ответы:

81

У демона MongoDB (mongod) есть опция командной строки для запуска сервера в фоновом режиме ...

--fork

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

mongod --fork --logpath /var/log/mongod.log

Вы можете поместить это в файл сценария /etc/init.d/mongod bash. А затем для запуска службы при запуске создайте стандартные символические ссылки (S ## & K ##) внутри /etc/rc#.d/. Вот учебник, который объясняет этот процесс более подробно. Прокрутите страницу вниз до раздела «Активация сценария инициализации». Это также имеет дополнительное преимущество - возможность выполнять такие команды, как ...

service mongod status
service mongod start
service mongod stop
Джесси Уэбб
источник
Я не могу сделать это в Windows.
Малик Брахими
@MalikBrahimi См stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db работал для меня
Selvakumar Esra
Если вы не хотите создавать дополнительный файл журнала, есть также опция, --syslogв которой все просто записывается в системный журнал.
Маркус Граф
@ Джесс Уэбб. И продолжит ли он работать после того, как я выйду из системы, например, по ssh-соединению?
Мигель
11

Поскольку вы работаете на Mac, вы должны использовать Homebrew для установки MongoDB (вам нужно будет установить Homebrew, если вы этого еще не сделали):

brew install mongodb

Допустим, версия, которая была установлена, называется 2.0.6-x86_64. Затем добавьте файл LaunchAgent plist, который он сгенерирует для вас:

mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mongodb/2.0.6-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Это будет запускаться mongodв фоновом режиме сейчас и каждый раз, когда вы перезагрузите компьютер.

Андрей
источник
1
обновлено:mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mongodb/3.2.10/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
helsont
4

попробуйте выполнить следующую команду:

mongod --fork --syslog
Педро Луз
источник
0

Классически, для запуска в фоновом режиме, просто начните с
nohup some_command -to launch &
Так что это nohup &, поместите команду, которую вы хотите запустить в фоновом режиме, между nohup и &. Он будет работать как вы, он будет продолжать работать после закрытия терминала или выхода из системы. Вы можете запустить его как другой пользователь через sudo. Чтобы запустить его при запуске, добавьте его в замену сценариев инициализации (не знаю, как они его называют). Он запишет любой вывод в файл, где вы начали, он называется nohup.out

Рональд Поттол
источник
0

Лучший способ заставить программу работать при запуске в OS X - это создать LaunchDaemon (см . Документацию Apple и взглянуть на некоторые из поставляемых Apple демонов в / System / Library / LaunchDaemons) и установить ее в / Library / LaunchDaemons. Lingon может помочь вам создать файл .plist.

Гордон Дэвиссон
источник