Mac OS X에서 mongod를 중지하는 깨끗한 방법은 무엇입니까?


88

mongo 1.8.2를 실행 중이며 Mac에서 깔끔하게 종료하는 방법을 확인하려고합니다.

우분투 서버에서 다음을 사용하여 mongo 셸에서 mongo를 깨끗하게 종료 할 수 있습니다.

> use admin
> db.shutdownServer()

하지만 내 Mac에서는 mongod 프로세스를 죽이지 않습니다. 출력은 종료되어야한다는 것을 보여 주지만 i ps -ef | grep mongo 그것은 나에게 활성 프로세스를 보여줍니다. 또한 여전히 mongo 셸을 열고 종료되지 않은 것처럼 내 db를 쿼리 할 수 ​​있습니다.

내 db.shutdownServer ()의 출력은 다음과 같습니다.

MongoDB shell version: 1.8.2
connecting to: test
> use admin                  
switched to db admin
> db.shutdownServer()
Tue Dec 13 11:44:21 DBClientCursor::init call() failed
Tue Dec 13 11:44:21 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1
server should be down...
Tue Dec 13 11:44:21 trying reconnect to 127.0.0.1
Tue Dec 13 11:44:21 reconnect 127.0.0.1 failed couldn't connect to server 127.0.0.1
Tue Dec 13 11:44:21 Error: error doing query: unknown shell/collection.js:150

난 그냥 프로세스를 죽일 수 있다는 것을 알고 있지만 더 깨끗하게하고 싶습니다.


어떻게 시작 mongod했습니까? 껍질에서? 사용 launchctl?
dcrosta 2011

로그에있는 정보가 있습니까? MongoDB가 "자동 재시작"일 수 있습니다. --logappend완전히 새로운 로그 파일이 프로세스가 다시 시작되었음을 나타내는 분명한 표시이지만 을 사용하여 실행할 수 있습니다 .
Gates VP

답변:


175

launchctl이 mongod 인스턴스를 관리하기 때문일 수 있습니다. mongod 인스턴스를 시작하고 종료하려면 먼저 언로드하십시오.

launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist

그런 다음 mongod를 수동으로 시작하십시오.

mongod -f path/to/mongod.conf --fork

mongod.conf 위치는 ~/Library/LaunchAgents/org.mongodb.mongod.plist.

그 후에는 db.shutdownServer()잘 작동합니다.

2014 년 2 월 22 일 추가됨 :

homebrew를 통해 mongodb를 설치 한 경우 homebrew에는 실제로 편리한 brew services명령이 있습니다. 현재 실행중인 서비스를 표시하려면 :

brew services list

mongodb를 시작하려면 :

brew services stop mongodb-community

mongodb가 이미 실행중인 경우 중지하려면 :

brew services stop mongodb-community

최신 정보

edufinn이 주석에서 지적했듯이 brew services이제 사용자 정의 명령으로 사용할 수 있으며 다음 명령으로 설치할 수 있습니다 brew tap gapple/services..


23
관심이있는 사람이 있다면, 현재 homebrew를 통해 mongodb를 설치했다면 mongodb launchctl stop homebrew.mxcl.mongodb를 중지 해야합니다 .
Tyler Brock

3
2014 년 9 월 brewbrew services다음 과 관련된 사용 중단 알림이 있습니다 .$ brew services Warning: brew services is unsupported and will be removed soon.
Pablo Navarro

3
2014 년 12 월 brew services에 제거되었습니다. $ brew services Error: Unknown command: services
hughes

6
brew services이제 사용자 정의 명령으로 사용할 수 있으며 다음 명령으로 설치할 수 있습니다 brew tap gapple/services..
edufinn

1
mongodb 서비스를 시작한 후 노드 서버에 연결할 수 없습니다. 그러나 명령 줄에서 mongodb를 시작하면 제대로 작동합니다. 포트 문제인 것 같네요 .. 서비스 시작시 포트 설정은 어떻게하나요?
pravin 2015

35

homebrew와 함께 mongodb를 설치했다면 더 쉬운 방법이 있습니다.

launchctl로 mongo 작업 나열 :

launchctl list | grep mongo

몽고 작업 중지 :

launchctl stop <job label>

(저에게 이것은 launchctl stop homebrew.mxcl.mongodb)

mongo 작업 시작 :

launchctl start <job label>

24

간단한 방법은 mongodb의 프로세스 ID를 가져 와서 죽이는 것입니다. 데이터베이스에 손상을 줄 수 있으므로 kill -9 pid를 사용하지 마십시오.

그래서, 1. mongodb의 pid를 얻으십시오

$ pgrep mongo

몽고의 pid를 얻게 될 것입니다.

$ 죽이기

kill -15도 사용할 수 있습니다.


8

homebrew를 통해 mongodb 커뮤니티 서버를 설치 한 경우 다음을 수행 할 수 있습니다.

brew services list

다음과 같이 현재 서비스가 나열됩니다.

Name              Status  User          Plist
mongodb-community started thehaystacker /Users/thehaystacker/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

redis             stopped

그런 다음 먼저 중지하고 다시 시작하여 mongodb를 다시 시작할 수 있습니다.

brew services stop mongodb
brew services start mongodb

4

port명령 자체를 사용하여 MongoDB 서버를 중지하는 것을 선호 합니다.

sudo port unload mongodb

그리고 다시 시작합니다.

sudo port load mongodb


1

이것은 오래된 질문이지만 검색하면서 찾은 질문입니다.

와 함께 설치 brew한 경우 솔루션은 실제로 다음과 같습니다.

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist


0

서비스가 brew를 통해 실행중인 경우 다음 명령을 사용하여 중지 할 수 있습니다.

brew services stop mongodb

0

다른 사람들이 제공하는 솔루션은 저를 위해 일했지만 더 이상 저를 위해 작동하지 않습니다.

brew services stop mongodb
brew services start mongodb

brew services list 준다

Name              Status  User      Plist
mongodb-community started XXXXXXXXX /Users/XXXXXXXXX/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

그래서 나는 mongodb-community대신 mongodb나를 위해 일했습니다.

brew services stop mongodb-community
brew services start mongodb-community
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.