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


101

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

1
Mac OS / Xの複数のバージョンのpostgresにも注意する必要があります。homebrewを介してpostgresをインストールした場合、パスが正しく設定されていない場合に上記のエラーが発生する可能性があります。誤ってパスを調べて、パスを調整するまでうまく機能しなかったpostgresのシステムインストールの使用を開始しました。 brewインストールを使用する
ジェイミークック

回答:


94

実行中のプロセスを確認する最も簡単な方法:

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

わかりました。そのようなものが見つからない場合、サーバーを起動するにはどうすればよいですか?
Ramy

4
pgrep postgresも動作します。またはps auxwww | grep [p]ostgresgrepピックアップされないようにします。
Gregory Nisbet

1
ブー、ヒス・リ:ps | grep医療過誤の提案。pgrepかろうじて受け入れられます。pg_ctl statusある偉大なps auxwww | grep postgresマッチするだろうgrep postgres、そしてless /var/log/postgres/whatever
Charles Duffy

データベースクラスタディレクトリ/Library/PostgreSQL/8.3/dataは、ユーザーがinitdbコマンドを使用して任意に作成することに注意してください。こちらが8.3のドキュメントです
GPL

58

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

$ pg_ctl status

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

ここで私は私の中に持っているものだ~/.bashrcpostgresのためのファイル:

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

エラーメッセージを考慮して、initGoodコマンドを実行するというSamGoodyの提案が「接続が拒否されました」の問題を解決すると思います。修正されたら、postgres dbサーバーのステータスを取得するための提案を試してください。
l3x

26

おそらく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のような良いものを使うなら!トラフィックをブロックするように構成されている場合、ページにはデータベースが表示されません。


20

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

ドキュメントから:

サーバーが接続を正常に受け入れている場合、pg_isreadyはシェルに0を返します。サーバーが接続を拒否している場合(たとえば、起動時)、接続試行に対する応答がなかった場合2、試行が行われなかった場合(たとえば、期限が切れている場合)無効なパラメータに)。


9.3より前のpsqlで同じことをどのように確認しますか?
BRBdot 2018

11

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

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

@Ramy パスのvarbinに置き換えました。
James Allman、

んーオッケー。インストールの場所を確認する必要があると思いました。新しいアップデートをご覧ください。
Ramy

どのようにpostgresをインストールしましたか?postgresのインストール後にinitdbを実行しましたか?
Nvick

5

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

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


3
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &postgresを一度にチェックして起動したい場合(自動化スクリプトに便利)。
ケイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.