Как остановить mongo DB в одной команде

Мне нужно запустить/остановить MongoDB на кли. Это довольно просто начать:

./mongod

Но чтобы остановить Mongo DB, мне нужно сначала запустить открытую оболочку mongo, а затем ввести две команды:

$./mongo

использовать admin

db.shutdownServer()

Поэтому я не знаю, как остановить mongo DB в одной строке. Любая помощь?

Ответ 1

Запуск и остановка MongoDB рассматривается в руководстве MongoDB. Он объясняет различные варианты остановки MongoDB через оболочку, cli, драйверы и т.д. Он также детализирует риски неправильной остановки MongoDB (например, повреждение данных) и рассказывает о различных сигналах уничтожения.

Кроме того, если вы установили MongoDB, используя менеджер пакетов для Ubuntu или Debian, вы можете остановить mongodb (ранее mongod) следующим образом:

  • Выскочка: sudo service mongodb stop

  • Сисвинит: sudo/etc/init.d/mongodb stop

Или в Mac OS X

Или в системах на базе Red Hat:

  • service mongod stop

Или в Windows, если вы установили как службу с именем MongoDB:

  • net stop MongoDB

И если не установлено как служба (начиная с Windows 7+), вы можете запустить:

  • taskkill/f/im mongod.exe

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

Ответ 2

Если вы буквально хотите, чтобы одна строка была эквивалентна командам в исходном вопросе, вы можете использовать псевдоним:

mongo --eval "db.getSiblingDB('admin').shutdownServer()"

Отметить ответ на запуск и остановку MongoDB через службы является более типичным (и рекомендуемым) административным подходом.

Ответ 4

Если сервер работает как процесс переднего плана в терминале, это можно сделать, нажав

Ctrl-C

Еще один способ чисто выключения работающего сервера - использовать команду shutdown,

> use admin
> db.shutdownServer();

В противном случае для отправки может использоваться команда типа kill сигнал. Если mongod имеет 10014 в качестве своего PID, команда будет

kill -2 10014

Ответ 5

Я следовал официальной документации MongoDB для остановки с сигналами. Можно использовать одну из следующих команд (PID представляет Process ID процесса mongod):

kill PID

который отправляет сигнал 15 (SIGTERM), или

kill -2 PID

который посылает сигнал 2 (SIGINT).

Предупреждение из документации MongoDB :
Никогда не используйте kill -9 (то есть SIGKILL), чтобы завершить mongod экземпляра mongod.

Если у вас запущено несколько экземпляров или вам не pkill PID, вы можете использовать pkill для отправки сигнала всем запущенным процессам mongod:

pkill mongod

или же

pkill -2 mongod

или, что гораздо безопаснее, только процессам, принадлежащим вам:

pkill -U $USER mongod

или же

pkill -2 -U $USER mongod

PS
Примечание: я прибег к этой опции, потому что mongod --shutdown, хотя и упоминается в текущей документации MongoDB, любопытно, что не работает на моей машине (macOS, mongodb v3.4.10, установлен с homebrew):
Error parsing command line: unrecognised option '--shutdown'

PPS
(специфично для macOS) Прежде чем кто-нибудь задумывается: нет, я не мог остановить это командой
brew services stop mongodb
потому что я не начал это с
brew services start mongodb.
Я начал mongod с пользовательской командной строки :-)

Ответ 7

Один лайнер для запуска или остановки службы mongodb с помощью командной строки;

  • Для запуска службы используйте: NET START MONGODB
  • Чтобы остановить использование службы: NET STOP MONGODB

Я использую это сам, он работает.

Ответ 8

создайте файл с именем mongostop.bat

сохранить в нем следующий код

 mongo admin --eval "db.shutdownServer()"

запустите файл mongostop.bat, и вы успешно остановили mongo

Ответ 9

Из данных команд я думаю, что вы на Linux.

Начать MongoDB:

$ sudo service mongod start
mongod start/running, process XXXXX 

Проверить статус:

$ sudo service mongod status
mongod start/running, process XXXXX 

Остановить MongoDB:

$ sudo service mongod stop
mongod stop/waiting 

Ответ 10

Я просто сделал:

quit();

Обратите внимание, что я использую mongo 3.0.

Mongo

Ответ 11

в окне терминала на вашем mac, нажмите control + c

Ответ 12

CTRL + C

в командной строке Windows

Ответ 13

Я использую этот запуск script в Ubuntu.

#!/bin/sh

### BEGIN INIT INFO
# Provides:     mongodb
# Required-Sart:
# Required-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO

. /lib/lsb/init-functions

PROGRAM=/opt/mongo/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`

test -x $PROGRAM || exit 0

case "$1" in
  start)
     log_begin_msg "Starting MongoDB server"
         ulimit -v unlimited.
         ulimit -n 100000
     /opt/mongo/bin/mongod --fork --quiet --dbpath /data/db --bind_ip 127.0.0.1 --rest   --config /etc/mongod.conf.
     log_end_msg 0
     ;;
  stop)
     log_begin_msg "Stopping MongoDB server"
     if [ ! -z "$MONGOPID" ]; then
kill -15 $MONGOPID
     fi
     log_end_msg 0
     ;;
  status)
     ;;
  *)
     log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
     exit 1
esac

exit 0

Ответ 14

Окна

В PowerShell это: Stop-Service MongoDB

Затем, чтобы запустить его снова: Start-Service MongoDB

Чтобы проверить, запущена ли она, запустите: net start | findstr MongoDB.

Примечание: выше принимает MongoDB зарегистрирован как услуга.

Ответ 15

Опираясь на ответ от стенние:

mongo --eval "db.getSiblingDB('admin').shutdownServer();quit()"

Я обнаружил, что Монго пытается восстановить соединение с БД после выключения сервера, что может вызвать задержку и сообщения об ошибках. Добавление quit() после выключения ускоряет его и уменьшает количество сообщений, но оно все еще остается.

Я также хочу добавить контекст - я запускаю и останавливаю mongod как часть тестов для другого кода, поэтому регистрация в качестве службы не подходит для варианта использования. Я надеюсь в конечном итоге что-то, что работает на всех платформах (это проверено в Windows прямо сейчас). Я использую Mongod 3.6.9