When I try to run a server:
postgres@ubuntu:~$ /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
LOG: could not bind IPv4 socket: Address already in use
HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
WARNING: could not create listen socket for "localhost"
FATAL: could not create any TCP/IP sockets postgres@ubuntu:~$
Then I change user to myself:
postgres@ubuntu:~$ su - michael
michael@ubuntu:~$ sudo netstat -tulpn | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 959/postgres
Well, postgres seems to be listening to the port and this seems to be the problem.
Let us change pack to postgres and try to kill this process:
postgres@ubuntu:~$ kill `cat /usr/local/pgsql/data/postmaster.pid`
The reaction is:
cat: /usr/local/pgsql/data/postmaster.pid: No such file or directory
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Could you recommend me how to proceed?
First, get the running Postgres pid:
ps -ef | grep postmaster | grep -v grep | awk '{print $2}'
Then kill it
kill <the_pid_you_just_got>
But unless you are trying to do something very special with Postgres (multiple instances...) you should stop it using sudo /etc/init.d/postgresql stop (or sudo /etc/init.d/postgres stop) AND start it using sudo /etc/init.d/postgresql start
Postgres runs as a service, and so it has a service control file/script which is in charge of correctly starting and stopping it. These control files used to be located inside /etc/init.d, but I must admit it has become a bit messy these days, with the growing number of services management systems (init, upstart, systemd...)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With