Can I just kill mongod to stop mongo? - macos

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?

It finally succeeded (Ubuntu 15.04) with
//1.find process by name:
$ pgrep mongo
1350
//2.kill mongod-process
$ kill 1350

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).

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...
The mongod is kept running as a service by "launchctl" in mac systems. "just killing" it will kill that service.
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.
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

Related

Cannot permanently disable httpd on Mac 10.14 Mojave after upgrade

I'm running Mojave on a Mac Pro. Prior to this version of the OS I used Apple's Server app to manage Apache/httpd. Now I can't seem to permanently kill or stop httpd. Something keeps it alive and restarts it even when I do the following as root...
launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
apachectl stop
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
apachectl -k stop
httpd (no pid file) not running
If I 'killall httpd' it just comes back. If I kill the main root httpd process in Activity Monitor, it comes right back. Restart the computer, it's still running.
I just want to permanently kill httpd so I can do an alternate installation, possibly with brew or on another machine. I don't want it running and I don't understand what keeps relaunching httpd on me.
The command you mentioned first works for me. I just added 'sudo'
local:~ mac$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
The solution explained in Answer 1 did not work for me when Mojave server.app was installed.
I had to use this:
sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist

How to restart Docker-for-mac with command?

I'm using Docker for mac.
I'd like to restart this Docker-for-mac App with command on Terminal.
What's the command?
There was no documentation for this.
I had do restart it by clicking that button anytime that I needed to.
Forcing Docker for Mac to re-read its config with
killall -HUP com.docker.hyperkit
might work - if it doesn't, please explain in more detail why you need to restart Docker in the first place.
For me I needed to restart Docker so I could install the new version
killall Docker did the trick.

Start / Stop MongoDB with Homebrew

I am using mac osx 10.10.5
This question has been asked many times before and after following the steps, I notice bizarre behavior.
These are the steps which I have taken
brew tap gapple/services
brew install mongodb
This installs the product and now when I do brew services list I can see mongodb in a stopped state.
When I tried to start the process by brew services start mongodb I get an error
Error: Could not read the plist for mongodb!
OK. I googled a solution
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mongodb/3.0.6/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/
Now as soon as the file is copied, when I do brew services list ... the mongo process is automatically running.
Now when I do brew services stop mongodb
It says
Error: Service `mongodb` not running, wanna start it? Try `brew services start mongodb`
Now this is bizarre, because just in the last step it said its running. Now when I do
mongodb services list it says that the service is stopped. (so the stop command above did work. Even though it threw an error).
Now if I do
brew services start mongodb
It gives error Error: Could not read the plist for mongodb!
Now if I copy the file again
cp /usr/local/Cellar/mongodb/3.0.6/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/
The service automatically begins to run.
I find this whole thing really bizarre. All I want is a clean way to start stop the mongo db service. And although there are many threads on this site (and elsewhere) ... they don't work or just have strange behavior.
brew services start/restart/stop mongodb-community#4.0
For me I had multiple version of mongodb and when I tried to switching between them, I got this error
Error: Could not read the plist for `mongodb26`!
This is what I did to start mongodb26 service.
brew unlink mongodb24
brew link mongodb26
brew services start mongodb26
You can list services by doing
brew services list
and then as one of the answers said brew services start [NAME] or brew services stop [NAME]
I think you should look at their Github repo on this. I gapple/services is deprecated. This might be a more up to date options.
You should use instead: brew services stop mongodb-community#4.2, don't forget to mention the version of MongoDB you installed and using for your purposes.
If you still facing issues, follow this link: Click here
inside of Hombrew Simple way is to get the process id of MongoDB and kill it.
get the pid:
pgrep mongo
then kill with this command
kill <pid>

Postgres.app Could not start on port 5432

I'm using http://postgresapp.com. In the menubar it gives the error " Could not start on port 5432." Similarly if I try to start the server from the terminal, I get:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
I also ran pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
and got the output server starting but still get the same errors when connecting to psql.
If you are running your server on a macOS machine and installed Postgres through Homebrew, you can stop the current instance like this:
brew services stop postgresql
Then click the Elephant in the native menu-bar at the top of the screen and it should successfully startup.
You can stop the process by finding the PID with
lsof -i :5432
and then killing it with
kill -9 <PID>
If you've installed Postgres via another method (for example, from www.postgresql.org) and it's starting automatically at startup, you can prevent that Postgres from starting via the following:
sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist
sudo rm -f /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist
TIP: use tab to autocomplete after the com.edb.launchd part to figure out what version is loading.
Restart Postgres.app and you should be good to go.
(from http://forums.enterprisedb.com/posts/list/1831.page;jsessionid=70621DC48C99EDE663A6A594B05F1A02#6782)
I was just having this exact issue. When I ran which psql it was pointing at the Postgres client tools installed with Lion:
/usr/bin/psql
Using a hint from Frank Wiles I ran ps auxw | grep post to confirm that postgres was running and that it was running on the right port, that also showed me the postgres.app path:
/Applications/Postgres.app/Contents/MacOS/bin/postgres.
So I edited by .bash_profile to export that directory. On first effort I added it to the end of the path. When I ran echo $PATH I could see that usr/bin was the first thing in the path, and which psql still gave the /usr/bin path. At that point a friend guided me in the right direction:
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:${PATH}"
Start a new terminal window, then run which psql -- it should point to the postgres.app location and psql should fire up the postgres shell. Works fine now.
I have tried just about every solution to this problem that is out there. For me it always happens when my MacBook's battery dies, even if the computer is already sleeping. I was poking around in ~/Library/Application\ Support/Postgres/var-9.4 and I discovered another postmaster.pid file that I had not seen before. I deleted it, and now everything is back up and running! I am running the Postgres.app version, not the brew version.
Steps I took:
Make sure postgres.app is not running.
Run rm ~/Library/Application\ Support/Postgres/var-9.$X/postmaster.pid
If you don't have a var-9.$X directory, just run rm ~/Library/Application\ Support/Postgres/postmaster.pid
Restart postgres.app
Get back to developing cool stuff.
This command is a one-liner that instantly kills all PostgresSQL processes.
sudo kill -kill $(sudo lsof -t -i :5432)
This fixed all my problems on Mac OSX Mojave 10.14.1.
You my have another instance of postgres running, that is the only application interested in this port. You should use netstat and ps to determine this. Then stop the instance and uninstall it, you mayhave installed enterpiseDb for example, that is what I did.
I generally face this issue on my mac, and this fixes it for me always
rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql
Hope this is helpful
I had a similar problem where I could not connect to the Postgres.app even though the app itself said that it is running on port 5432.
I am not sure why, but even when I quit the app and checked that no postgres processes was running with ps -a. these files existed:
/tmp/.s.PGSQL.5432
and
/tmp/.s.PGSQL.5432.lock
My solution was to delete these files and then start the postgres.app again.
This is what worked for me:
$ sudo pkill -u postgres
Props to this resource:
https://github.com/PostgresApp/PostgresApp/issues/197#issuecomment-474534056
It can also happen that the PID is taken.
This ocurred to me when the Computer suffered an unexpected reboot.
If so, you must go to:
˜/Library/Application Support/Postgres/var-9.4
You can check that path in Postgres.app Preferences dialog.
And then, just remove the pid file
sudo rm postmaster.pid
And the server starts up right away.
When trying to open the Postgres app was getting that same error regarding post 5432 (on Mac OSX 10.10.5)
I did:
$ lsof -i | grep LISTEN
Saw which PID was running postgres at that port, did:
$ killall {pid} and then $ brew uninstall postgres
After that, restarted my Mac, and ran:
$ lsof -i | grep LISTEN again just to make sure. Saw no postgres running anywhere and was able to open the Postgres app without getting that warning.
Then I reinstalled postgres with $ brew install postgres
ANOTHER OPTION:
(I also tried this one time when the above approach didn't work and I could not kill any of the PID)
$ ps auxw | grep post
Saw a slew postgres processes, which I then sudo kill <PID>
Everything working fine now.
For those using mac, this code worked for me like charm.
sudo pkill -u postgres
At a guess, something else had taken port 5432 so the app chose to run on 5433 instead.
Why not just connect to Pg on port 5433, if that's where it's running? You have a /tmp/.s.PGSQL.5432 socket file, so you can connect with psql -p 5433 for UNIX domain socket connections. It'll also be listening on the same port with TCP/IP, so you can use psql -h localhost -p 5433 for TCP/IP and have your apps connect to port 5433 instead of 5432.
Change your .psqlrc to set the new port as default and you can forget it isn't on the default port.
I had similar problem when trying to use postgresql with rails. Updating my Gemfile to use new version of gem pg solve this problem for me. (gem pg version 0.16.0 works). In the Gemfile use:
gem 'pg', '0.16.0'
then run the following to update the gem
bundle install --without production
bundle update
bundle install
Mine failed to start up suddenly, and when I checked Console.app I saw:
com.heroku.postgres-service:
FATAL: could not create shared memory segment: Cannot allocate memory
DETAIL: Failed system call was shmget(key=5432001, size=3874816, 03600).
HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter. You can either reduce the request size or reconfigure the kernel with larger SHMALL. To reduce the request size (currently 3874816 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
The PostgreSQL documentation contains more information about shared memory configuration.
It turns out Postgres wouldn't start up because I had Wireshark (and X11) running. It worked fine after I quit Wireshark.
Good luck!
I resolved this problem by
Identifying what was running on port 5432 by using "netstat" in the CL, which was postgreSQL not Postgres
I located the directory that contained postgreSQL, which was root/Library/PostgreSQL
I ensured an instants of the application wasn't running via Activity Monitor
Then I deleted the folder and rebooted! Everything was fine!
Somehow I totally forgot that this socket file will be hidden because of the dot. Make sure you use ls -A /tmp/.s.PGSQL.5432 if you are checking to see if the socket is actually there.
You most likely has a PostgreSQL installed, deleted it and installed it again. PostgreSQL typically used port 5432 but if not available, increases to the next available one, in this case 5433. So, you probably chose this port on your second install.
I think you should check file:
/etc/services
and adjust rows below for your expected port number:
postgresql 5432/udp # PostgreSQL Database
postgresql 5432/tcp # PostgreSQL Database
After this you should restart your computer (simplest way).
I had the same issues:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
In my case it was a corrupt host file on my mac. I was missing:
127.0.0.1 localhost
A quick easy way to check is to open terminal and type:
ping localhost
or:
scutil -r localhost
More info here
Hope it helps.
Netstat, ps aux, etc ... none showed 5432 in use. Checked /Library. Found PG9.6 old install still there. Did rm -rf and bang. Version 11 works fine.
I was losing my mind over this problem! i kept running
lsof -i | grep 5432
and nothing was showing up!
finally i ran it using sudo and a potgres client showed up.
so if anyone else has tried the lsof and went nowhere, try it with sudo.
sudo lsof -i | grep 5432
and then
sudo kill <the_pid_from_postgresql_found_from_lsof>
The same problem just happened to me. I had Postgres.app 9.2.4.1 running since a while. When I updated Mac OS X to 10.8.5, after the mandatory reboot it was not working anymore. I tried several things, including updating to 9.2.4.3 and neither after another reboot it was working.
I had to open the file /Users/$USER/Library/Application Support/Postgres/var/postgresql.conf and to:
uncomment line unix_socket_permissions = 0777
uncomment and adapt line unix_socket_directory = '/tmp'
After a restart, Postgres.app was running like a charm.
A file named "postmaster.pid" (in my $PGDATA directory) were preventing postgresql to start. It was a zombie file, placed there 10 days ago and when I brutally shut down the computer (pulling the plug, literally), no clean up process had the opportunity to remove that file.
beside all the helpful answers, you might also want to take a look at official page instructions :
postgressapp.com/documentation/remove.html
I had this same issue and mine was caused by some configuration issues I was having. Clearing the user configurations and reinstalling postgres in brew worked for me!
brew uninstall postgresql
rm -rf /usr/local/var/postgres
I ran the following:
psql --version then brew services stop postgresql#<VERSION>
finally, start your Postgres app on your Mac.

What's a clean way to stop mongod on Mac OS X?

i'm running mongo 1.8.2 and trying to see how to cleanly shut it down on Mac.
on our ubuntu servers i can shutdown mongo cleanly from the mongo shell with:
> use admin
> db.shutdownServer()
but on my Mac, it does not kill the mongod process. the output shows that it 'should be' shutdown but when i ps -ef | grep mongo it shows me an active process. also, i can still open a mongo shell and query my dbs like it was never shutdown.
the output from my db.shutdownServer() locally is:
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
i know i can just kill the process but i'd like to do it more cleanly.
It's probably because launchctl is managing your mongod instance. If you want to start and shutdown mongod instance, unload that first:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Then start mongod manually:
mongod -f path/to/mongod.conf --fork
You can find your mongod.conf location from ~/Library/LaunchAgents/org.mongodb.mongod.plist.
After that, db.shutdownServer() would work just fine.
Added Feb 22 2014:
If you have mongodb installed via homebrew, homebrew actually has a handy brew services command. To show current running services:
brew services list
To start mongodb:
brew services start mongodb-community
To stop mongodb if it's already running:
brew services stop mongodb-community
Update*
As edufinn pointed out in the comment, brew services is now available as user-defined command and can be installed with following command: brew tap gapple/services.
If you installed mongodb with homebrew, there's an easier way:
List mongo job with launchctl:
launchctl list | grep mongo
Stop mongo job:
launchctl stop <job label>
(For me this is launchctl stop homebrew.mxcl.mongodb)
Start mongo job:
launchctl start <job label>
Simple way is to get the process id of mongodb and kill it.
Please note DO NOT USE kill -9 pid for this as it may cause damage to the database.
so,
1. get the pid of mongodb
$ pgrep mongo
you will get pid of mongo, Now
$ kill
You may use kill -15 as well
If you have installed mongodb community server via homebrew, then you can do:
brew services list
This will list the current services as below:
Name Status User Plist
mongodb-community started <your_user_name> /Users/<your_user_name>/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
redis stopped
Then you can restart mongodb by first stopping and restart:
brew services stop mongodb
brew services start mongodb
I prefer to stop the MongoDB server using the port command itself.
sudo port unload mongodb
And to start it again.
sudo port load mongodb
Check out these docs:
http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal
If you started it in a terminal you should be ok with a ctrl + 'c' -- this will do a clean shutdown.
However, if you are using launchctl there are specific instructions for that which will vary depending on how it was installed.
If you are using Homebrew it would be launchctl stop homebrew.mxcl.mongodb
The solutions provided by others used to work for me but is not working for me anymore, which is as below.
brew services stop mongodb
brew services start mongodb
brew services list gives
Name Status User Plist
mongodb-community started XXXXXXXXX /Users/XXXXXXXXX/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
So I used mongodb-community instead of mongodb which worked for me
brew services stop mongodb-community
brew services start mongodb-community
This is an old question, but its one I found while searching as well.
If you installed with brew then the solution would actually be the this:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
If the service is running via brew, you can stop it using the following command:
brew services stop mongodb

Resources