답변:
MongoDB 시작 및 중지 는 MongoDB 매뉴얼에서 다룹니다. 쉘, cli, 드라이버 등을 통해 MongoDB를 중지하는 다양한 옵션에 대해 설명합니다. 또한 MongoDB를 잘못 중지 할 수있는 위험 (예 : 데이터 손상)과 다른 킬 (kill) 신호에 대해 설명합니다.
또한 Ubuntu 또는 Debian 용 패키지 관리자를 사용하여 MongoDB를 설치 한 경우 다음과 같이 mongodb (현재 ubuntu의 mongod)를 중지 할 수 있습니다.
건방진 녀석: sudo service mongod stop
Sysvinit : sudo /etc/init.d/mongod stop
또는 Mac OS X에서
다음을 사용하여 mongod 프로세스의 PID 찾기 $ top
에 의해 프로세스를 죽여 $ kill <PID>( Mongo 문서에 대한 자세한 정보가 있습니다 )
또는 Red Hat 기반 시스템에서 :
service mongod stop또는 Windows 라는 서비스로 설치 한 경우 MongoDB:
net stop MongoDB서비스로 설치되지 않은 경우 (Windows 7 이상) 다음을 실행할 수 있습니다.
taskkill /f /im mongod.exe부정확 한 종료 문제, 이러한 시나리오를 피하는 가장 좋은 방법 및 부정확 한 종료시 수행 할 작업에 대한 자세한 내용 은 예기치 않은 종료 후 데이터 복구 를 참조하십시오 .
말 그대로 원래 질문의 명령과 동등한 한 줄을 원한다면 별칭을 지정할 수 있습니다.
mongo --eval "db.getSiblingDB('admin').shutdownServer()"
서비스를 통한 MongoDB 시작 및 중지에 대한 Mark의 답변은보다 일반적이고 권장되는 관리 방법입니다.
start C:\mongodb\bin\mongod.exe --config C:\net2\primary1-pc\mongod.cfg start C:\mongodb\bin\mongod.exe --config C:\net2\secondary1-pc\mongod.cfg ... 다음 SHUTDOWN.BAT이 C:\mongodb\bin\mongo.exe --eval "db.getSiblingDB('admin').shutdownServer()" --port 27017 C:\mongodb\bin\mongo.exe --eval "db.getSiblingDB('admin').shutdownServer()" --port 27018 C:\mongodb\bin\mongo.exe --eval "db.getSiblingDB('admin').shutdownServer()" --port 27019 ...
net stop MongoDB신뢰할 수 없다는 것을 알았 으므로 비슷한 것을 사용했습니다 mongo admin --eval "db.shutdownServer()". 건배!
mongod --dbpath /path/to/your/db --shutdown
공식 정보 : http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/
mongod v3.4.10: Error parsing command line: unrecognised option '--shutdown':-(
db.shutdownServer({force:1,timeoutSecs:0})남아있는 데이터가 2 차로 플러시되는 것을 막는 것처럼 보입니다 . 항상 그런 것은 아닙니다.
서버가 터미널에서 포 그라운드 프로세스로 실행중인 경우이를 눌러 수행 할 수 있습니다.
Ctrl-C
실행중인 서버를 완전히 종료하는 또 다른 방법은 shutdown 명령을 사용하는 것입니다.
> use admin
> db.shutdownServer();
그렇지 않으면 kill과 같은 명령을 사용하여 신호를 보낼 수 있습니다. mongod의 PID가 10014 인 경우 명령은 다음과 같습니다.
kill -2 10014
나는 신호로 멈추기 위해 공식 MongoDB 문서 를 따랐다 . 사용할 수있는 다음 명령 중 하나는 (PID는 표현 Process ID의 mongod과정을) :
kill PID
신호 15 (SIGTERM)를 보내거나
kill -2 PID
신호 2 (SIGINT)를 보냅니다.
MongoDB 문서의 경고 : 인스턴스 를 종료하기 위해
절대kill -9SIGKILL을 사용하지 마십시오mongod.
하나 이상의 인스턴스가 실행 중이거나 PID에 관심이없는 경우 실행중인 pkill모든 mongod프로세스에 신호를 보내는 데 사용할 수 있습니다 .
pkill mongod
또는
pkill -2 mongod
또는 훨씬 더 안전한 것은 귀하에게 속한 프로세스에만 해당됩니다.
pkill -U $USER mongod
또는
pkill -2 -U $USER mongod
추신
: 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커스텀 커맨드 라인으로 시작 했다 :-)
나의 특별한 경우는 :
이전에 mongod를 시작하십시오.
sudo -u mongod mongod -f /etc/mongod.conf
이제 중지하고 싶습니다 mongod.
그리고 공식 문서 Stop mongod Processes를 참조하십시오 .
(1) shutdownServer실패했지만
> use admin
switched to db admin
> db.shutdownServer()
2019-03-06T14:13:15.334+0800 E QUERY [thread1] Error: shutdownServer failed: {
"ok" : 0,
"errmsg" : "shutdown must run from localhost when running db without auth",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.shutdownServer@src/mongo/shell/db.js:302:1
@(shell):1:1
(2) --shutdown여전히 실패했습니다.
# mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db
(3) --shutdown을 추가 한 이전 시작 명령 :
sudo -u mongod mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
failed to kill process: errno:1 Operation not permitted
(4) 사용 service중지 :
service mongod stop
과
service mongod status
ps에서 프로세스를 볼 수 Active: inactive (dead)있지만 예상 되었지만 mongod실제로는 여전히 실행 중입니다.
# ps -edaf | grep mongo | grep -v grep
root 30213 1 0 Feb04 ? 03:33:22 mongod --port PORT --dbpath=/var/lib/mongo
그리고 마지막으로 다음 과 같은 방법 으로 mongod를 중지하십시오.
# sudo mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
지금까지 근본 원인 : 여전히 알 수 없음 ...
위의 솔루션이 도움이되기를 바랍니다.
mongostop.bat라는 파일을 만듭니다
다음 코드를 저장하십시오
mongo admin --eval "db.shutdownServer()"
mongostop.bat 파일을 실행하면 성공적으로 mongo가 중지되었습니다
명령 행을 사용하여 mongodb 서비스를 시작 또는 중지하는 하나의 라이너;
NET START MONGODBNET STOP MONGODB나는 이것을 직접 사용한다.
stennie의 답변을 바탕으로 :
mongo --eval "db.getSiblingDB('admin').shutdownServer();quit()"
서버가 종료 된 후 mongo가 db에 다시 연결하려고 시도하는 것이 지연 및 오류 메시지를 유발한다는 것을 알았습니다. 종료 후 quit ()를 추가하면 속도가 빨라지고 메시지가 줄어 듭니다. 그러나 여전히 하나가 있습니다.
또한 컨텍스트를 추가하고 싶습니다-다른 코드에 대한 테스트 케이스의 일부로 mongod를 시작 및 중지하고 있으므로 서비스로 등록하는 것이 사용 사례에 맞지 않습니다. 나는 모든 플랫폼에서 실행되는 것을 끝내기를 바라고 있습니다 (이것은 지금 창에서 테스트되었습니다). mongod 3.6.9를 사용하고 있습니다.
사제 사용 (권장 방법) :
시작한다:
brew services start mongodb-community
그만하다:
brew services stop mongodb-community
우분투 에서이 시작 스크립트를 사용합니다.
#!/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
PowerShell에서 다음과 같습니다. Stop-Service MongoDB
그런 다음 다시 시작하십시오. Start-Service MongoDB
시작되었는지 확인하려면 다음을 실행하십시오 net start | findstr MongoDB..
참고 : 위의 MongoDB는 서비스로 등록되어 있다고 가정 합니다 .
sudo service mongodb [start|stop|restart|status]입니다.sudo service stop mongodb결과 : 중지 : 인식 할 수없는 서비스