Question

I am very new at Mongo. I am running mongod as described here in Mac OS X. I am running two mongod processes from the command line. If I need to stop the mongod processes I just execute kill <pid of mongod>. Is it the recommended way to stop mongod?

Was it helpful?

Solution 2

This is quite late, but I had same problem now, and I found one easy way :

Esan-iMac:~$mongo admin --eval "db.shutdownServer()"

MongoDB shell version: 2.6.4
connecting to: admin
2015-02-19T10:54:22.574+0200 DBClientCursor::init call() failed
server should be down...

It's giving some odd messages, but it works.

And I made alias-command for running it easy.

alias stop-mongo='/opt/mongo/release/bin/mongo admin --eval "db.shutdownServer()"'

This works at least if you start your mongo manually (e.g. with --fork option).

OTHER TIPS

It finally succeeded (Ubuntu 15.04) with

//1.find process by name:

$ pgrep mongo

1350

//2.kill mongod-process

$ kill 1350

The accepted answer by Esa is correct. Also, regarding whether using kill is recommended - yes, but with flag -2 or no flag, never use -9. As mentioned in docs.

kill -2 `pgrep mongo`

Alias

alias stopmongo='kill -2 `pgrep mongo`'

Windows

use admin
db.shutdownServer()

For systems with auth enabled, users may only issue db.shutdownServer() when authenticated to the admin database or via the localhost interface on systems without authentication enabled.

Linux

mongod --shutdown

you can also use

kill <mongod process ID> 

see http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

For year of 2020:

Mongo should be installed through Brew, rather than the old school style on linux: i.e. tar.gz package download/uncompress/configure/run.

In the brew way, if Mongo is installed by brew tap mongodb/brew and brew install mongodb-community, you could do as follows to stop (and disable) it alike Systemd on Linux.

~ brew services list
Name              Status  User     Plist
mongodb-community started zhengxin /Users/zhengxin/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

~ brew services stop mongodb-community
==> Successfully stopped `mongodb-community` (label: homebrew.mxcl.mongodb-community)

terminal$ kill $(pgrep mongod)

this command can help killing the mongod process. sudo pkill -f mongod

Just encountered an issue with "just killing the mongod" in mac...

  1. The mongod is kept running as a service by "launchctl" in mac systems. "just killing" it will kill that service.

  2. Now to use mongo shell we do mongod again, however for other development purpose like connecting from node we need to make sure to run mongod time and again.

  3. Other alternative is shut down the system and start again.

Better Way :

Start using launchctl to manage such services. Here is an example for that :

What is the correct way to start a mongod service on linux / OS X?

The easiest way is Ctrl + C, which worked for me on a blocking bash shell under El Capitan.

If you have configured autostart, killing the process won't help, new one will start immediately. In order to disable autostart, you have to locate the autostart file first. You can try to find the file using e.g.

find / -name "mongodb.plist" or locate "mongodb.plist"

After the file is found, remove the autostart config using (you can try without sudo first, it's not needed if you have done the installation using Homebrew):

sudo launchctl unload -w <file>

If you want to kill the process anyway and it's not using autostart, remember not to use kill -9 <PID>, it can damage the db. kill -1 <PID> or kill -15 <PID> should be safe options.

https://docs.mongodb.com/manual/tutorial/manage-mongodb-processes/

official guide

remember not to use kill -9

otherwise maybe you need to remove lock file in dbpath

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top