2011-12-13 1 views
56

저는 mongo 1.8.2를 실행 중이며 Mac에서 시스템을 완전히 종료하는 방법을 알고 있습니다. 내가 가진 몽고 쉘에서 깨끗하게 종료 몽고 할 수있는 우리의 우분투 서버에Mac OS X에서 mongod를 중지하는 가장 좋은 방법은 무엇입니까?

:

> use admin 
> db.shutdownServer() 

하지만 내 Mac에서, 그것은 mongod 프로세스를 강제 종료하지 않습니다. 출력은 종료해야한다고 표시하지만 i ps -ef | grep mongo 그것은 활발한 프로세스를 보여줍니다. 또한 mongo 쉘을 열어서 절대로 종료되지 않은 것처럼 내 dbs를 쿼리 할 수 ​​있습니다.

내 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 

난 그냥 프로세스를 종료 할 수 있지만 좀 더 명확하게 그것을 할 싶습니다 알고있다. 이 문서 밖으로

+0

어떻게'몽고 '를 시작 했습니까? 껍데기에요? 'launchctl'을 사용하고 있습니까? – dcrosta

+0

로그의 정보가 있습니까? MongoDB가 "자동 재시작"일 수 있습니다. '--logappend'로 실행하고 싶을 수도 있습니다 만, 아주 새로운 로그 파일은 프로세스가 재시작되었음을 명확하게 보여줍니다. –

답변

121

될 것이다.

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

그런 mongod 수동으로 시작 : 시작하려는 및 종료 인스턴스를 mongod 경우, 먼저 언로드

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

당신은 ~/Library/LaunchAgents/org.mongodb.mongod.plist에서 mongod.conf 위치를 찾을 수 있습니다.

그 후 db.shutdownServer()은 정상적으로 작동합니다.

추가 2014년 2월 22일는 :

당신이 사제를 통해 설치 MongoDB를 한 경우

, 사제는 실제로 편리한 brew services 명령이 있습니다. 이미 실행중인 경우

brew services start mongodb

가 MongoDB를 중지하려면 : 현재 실행중인 서비스를 표시하려면 :

brew services list

는 MongoDB를 시작하려면

brew services stop mongodb

업데이트

의견에 edufinn이 지적한대로 brew services을 사용자 정의 명령으로 사용할 수 있으며 다음 명령을 사용하여 설치할 수 있습니다 : brew tap gapple/services.

+0

그게 다야. 감사! – emilebaizel

+21

누구나 관심이있는 경우, 현재 homebrew를 통해 mongodb를 설치 한 경우 실제로 mongodb를 중지하려면'launchctl stop homebrew.mxcl.mongodb'을 수행해야합니다. –

+3

2014 년 9 월에 '양조 서비스'에 대한 양조 통지서가 있습니다. '양조 서비스 경고 : 양조 서비스가 지원되지 않으며 곧 삭제됩니다.' –

3

점검 : 터미널에서 시작하는 경우

http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

당신은 ctrl + 'c'에 확인을해야 -이 완전 종료를 할 것입니다.

그러나 launchctl을 사용하는 경우 설치 방법에 따라 다를 수있는 특정 지침이 있습니다. 당신이 브루를 사용하는 경우

는 launchctl 당신의 mongod 인스턴스를 관리하기 때문에 그것은 아마 launchctl stop homebrew.mxcl.mongodb

4

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

sudo port unload mongodb 

그리고 다시 시작하십시오. 당신이 사제와 MongoDB를 설치 한 경우

sudo port load mongodb 
+2

Macport가 설치된 경우에만 작동합니다. –

21

, 더 쉬운 방법이 있습니다 :

launchctl list | grep mongo 

정지 몽고 작업 : launchctl와

목록 몽고 작업

launchctl stop <job label> 

이 (나를 위해 이것은 launchctl stop homebrew.mxcl.mongodb 임)

시작 몽고 작업 :

launchctl start <job label> 
+0

나를 위해 작동합니다. – realhu

2

이 오래된 질문이지만,뿐만 아니라 검색하는 동안 그 사람이 내가 발견했다.

당신이 brew와 함께 설치 한 경우 다음 솔루션은 실제로이 될 것이다 :

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

11

간단한 방법은 MongoDB를의 프로세스 ID를 얻고 그것을 죽일 것입니다. 주의 kill -9 pid를 사용하면 데이터베이스가 손상 될 수 있으므로 사용하지 마십시오.

때문에, 1. MongoDB를의 PID를 얻을

$ pgrep을 몽고

당신은 당신은 살인을 사용할 수 있습니다

$ 죽일 -15 이제

몽고의 PID를 얻을 것이다 잘