Як я можу запускати mongod у фоновому режимі на unix (mac osx)?


50

Мені б хотілося запускати монгода на задньому плані як завжди присутні речі. Який був би найкращий спосіб зробити це? Наче подобається те, як я можу запустити MySQL при запуску, і він завжди завжди працює у фоновому режимі. Можливо, це просто кілька баш сценаріїв, але було б непогано почути, якщо є кращий спосіб. Якщо це просто баш - як би це виглядало? Дякую.


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/. Ось підручник, який пояснює цей процес детальніше. Прокрутіть униз до розділу під назвою "Активізація сценарію Init". Це також має додаткову перевагу від можливості виконувати такі команди, як ...

service mongod status
service mongod start
service mongod stop

Я не можу зробити це в Windows.
Малік Брахімі


./bin/mongod --fork --logpath = logs / mongod.log --dbpath = дані / db працювали на мене
Selvakumar Esra

Якщо ви не хочете створити додатковий файл журналу, є також варіант, --syslogу якому все просто записується в системний журнал.
Маркус Граф

@Jesse Webb. І чи буде вона продовжувати працювати після того, як я вийду, наприклад, ssh-з'єднання?
Мігель

11

Оскільки ви перебуваєте на Mac, вам слід використовувати Homebrew для встановлення MongoDB (якщо ви ще цього не зробили), вам потрібно буде встановити Homebrew:

brew install mongodb

Скажімо, версія, яка була встановлена, названа 2.0.6-x86_64. Потім додайте файл плістів LaunchAgent, який він генерує для вас:

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


0

Класично, щоб запустити у фоновому режимі, просто почніть з
nohup some_command -для запуску &
Так що це nohup &, поставте команду, яку потрібно запустити на задньому плані між nohup та &. Він працюватиме як ви, він буде продовжувати працювати після закриття терміналу або виходу з системи. Ви можете запустити його як інший користувач через sudo. Щоб змусити його запустити, додайте його до заміни сценаріїв init (не знаю, як вони його називають). Він запише будь-який вихід у файл, де ви його запустили, називається nohup.out


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.