web-dev-qa-db-ja.com

PostgreSQLサーバーMac OS Xのステータスを確認する方法

Postgresqlサーバーが実行中かどうかを確認するにはどうすればよいですか?

私はこのメッセージを受け取っています:

[~/dev/working/sw] Sudo bundle exec rake db:migrate 
rake aborted!
could not connect to server: Connection refused
    Is the server running on Host "localhost" and accepting
    TCP/IP connections on port 5432?

更新:

> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory

アップデート2:

>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory
85
Ramy

実行中のプロセスをチェックする最も簡単な方法:

ps auxwww | grep postgres

次のようなコマンドを探します(バージョンは8.3ではない場合があります)。

/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data

サーバーを起動するには、次のように実行します。

/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log
86
Bohemian

次のコマンドを実行して、postgressが実行されているかどうかを確認できます。

$ pg_ctl status

PGDATA環境変数も設定する必要があります。

Postgresの~/.bashrcファイルには次のものがあります。

export PGDATA='/usr/local/var/postgres'
export PGHOST=localhost
alias start-pg='pg_ctl -l $PGDATA/server.log start'
alias stop-pg='pg_ctl stop -m fast'
alias show-pg-status='pg_ctl status'
alias restart-pg='pg_ctl reload'

それらを有効にするには、次のようにソースすることを忘れないでください:

$ . ~/.bashrc

今、それを試してみると、次のようなものが得られるはずです。

$ show-pg-status
pg_ctl: server is running (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres
44
l3x

おそらくpostgresを初期化していないでしょう。

HomeBrewを使用してインストールした場合、他の何かが使用可能になる前にinitを実行する必要があります。

手順を確認するには、brew info postgresを実行します

# Create/Upgrade a Database
If this is your first install, create a database with:
     initdb /usr/local/var/postgres -E utf8

To have launchd start postgresql at login:
   ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 
Then to load postgresql now:     
   launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
Or, if you don't want/need launchctl, you can just run:
    pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

それを実行すると、次のようなメッセージが表示されます。

成功。これで、次を使用してデータベースサーバーを起動できます。

postgres -D /usr/local/var/postgres or
pg_ctl -D /usr/local/var/postgres -l logfile start

それでも問題が解決しない場合は、ファイアウォールを確認してください。 HandsOffのような良いものを使用する場合!トラフィックをブロックするように構成されている場合、ページにはデータベースが表示されません。

18
SamGoody

PostgreSQL 9.3では、コマンドpg_isreadyを使用して、PostgreSQLサーバーの接続ステータスを確認できます。

docs から:

pg_isreadyは、サーバーが正常に接続を受け入れている場合はシェルに0を返し、サーバーが接続を拒否している場合(起動時など)1、接続試行への応答がなかった場合2無効なパラメータへ)。

15
benjwadams

Postgresqlサーバーがインストールされている場所によって異なります。 pg_ctlを使用して、以下のようにサーバーを手動で起動します。

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
10
Nvick

他の回答で提案されているpg_ctl statusコマンドは、postmasterプロセスが存在することを確認し、存在する場合は実行中であることを報告します。これは、必ずしも接続を受け入れたりクエリを実行したりする準備ができていることを意味しません。

psqlを使用して簡単なクエリを実行し、終了コードを確認するなど、別の方法を使用することをお勧めします。 psql -c 'SELECT 1'、またはpg_isready接続ステータスを確認するために を使用します。

4
Owen Pauling