Как остановить mongo DB в одной команде
Мне нужно запустить/остановить MongoDB на кли. Это довольно просто начать:
./mongod
Но чтобы остановить Mongo DB, мне нужно сначала запустить открытую оболочку mongo, а затем ввести две команды:
$./mongo
использовать admin
db.shutdownServer()
Поэтому я не знаю, как остановить mongo DB в одной строке. Любая помощь?
Ответы
Ответ 1
Запуск и остановка MongoDB рассматривается в руководстве MongoDB. Он объясняет различные варианты остановки MongoDB через оболочку, cli, драйверы и т.д. Он также детализирует риски неправильной остановки MongoDB (например, повреждение данных) и рассказывает о различных сигналах уничтожения.
Кроме того, если вы установили MongoDB, используя менеджер пакетов для Ubuntu или Debian, вы можете остановить mongodb (ранее mongod) следующим образом:
Или в Mac OS X
Или в системах на базе Red Hat:
Или в Windows, если вы установили как службу с именем MongoDB
:
И если не установлено как служба (начиная с Windows 7+), вы можете запустить:
Чтобы узнать больше о проблемах нечистого выключения, о том, как наилучшим образом избежать такого сценария и что делать в случае нечистого выключения, см. " Восстановление данных после неожиданного выключения".
Ответ 2
Если вы буквально хотите, чтобы одна строка была эквивалентна командам в исходном вопросе, вы можете использовать псевдоним:
mongo --eval "db.getSiblingDB('admin').shutdownServer()"
Отметить ответ на запуск и остановку MongoDB через службы является более типичным (и рекомендуемым) административным подходом.
Ответ 3
mongod --dbpath /path/to/your/db --shutdown
Дополнительная информация на официальном сайте: http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/
Ответ 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
с пользовательской командной строки :-)
Ответ 6
Используйте mongod --shutdown
Согласно официальному документу: manage-mongodb-Процессы/
: D
Ответ 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