12

サーバーを実行しようとすると:

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:~$ 

次に、ユーザーを自分自身に変更します。

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 

さて、postgresはポートをリッスンしているようで、これが問題のようです。

packをpostgresに変更して、このプロセスを強制終了してみましょう。

postgres@ubuntu:~$ kill `cat /usr/local/pgsql/data/postmaster.pid`

反応は次のとおりです。

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]

進め方を教えていただけますか?

4

1 に答える 1

11

まず、実行中の Postgres pid を取得します。

ps -ef | grep postmaster | awk '{print $2}'

それからそれを殺す

kill <the_pid_you_just_got>

ただし、Postgres で非常に特別なこと (複数のインスタンス...) を実行しようとしている場合を除き、sudo /etc/init.d/postgresql stop (または sudo /etc/init.d/postgres stop)を使用して停止し、開始する必要があります。 sudo /etc/init.d/postgresql start の使用

Postgres はサービスとして実行されるため、正しく開始および停止するサービス制御ファイル/スクリプトがあります。これらの制御ファイルは以前は /etc/init.d 内に配置されていましたが、サービス管理システム (init、upstart、systemd...) の数が増えているため、最近は少し面倒になっていることを認めなければなりません。

于 2012-10-05T13:10:15.047 に答える