14

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?

1 Answer 1

16

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

Sign up to request clarification or add additional context in comments.

8 Comments

Well, I tried ps -ef | grep postmaster | awk '{print $1}'. Under the user michael it showed michael. Well, I stopped Postgres as you suggested. Now there is nothing to listen to the port. I could not catch your remark about start. So, I deleted the data directory. Then I started from /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data. The reaction was: creating directory /usr/local/pgsql/data ... initdb: could not create directory "/usr/local/pgsql/data": Permission denied. Earlier I created data directory manually through sudo. Now: /usr/local$ ls -l results in
drwxr-xr-x 6 root root 4096 Oct 5 17:25 pgsql. Maybe I should just start everything from the very beginning and use another directory rather than /usr/local?
When I ran this command, I got 502 . so I then did the command kill 502 but then got the error -bash: kill: (502) - No such process
I get a different ps id everytime i run the fist command
The suggested line is wrong and will show the grep process itself. A correct version is ps -ef | grep postmaster | grep -v grep | awk '{print $2}'. If this is blank, there's nothing running called postmaster.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.