macOS で PostgreSQL サーバーが実行されているかどうかを確認する

Aqsa Amir 2023年6月20日
  1. macOS で PostgreSQL サーバーが実行されているかどうかを確認する
  2. grep コマンドを使用して PostgreSQL のステータスを確認する
  3. pg_ctl status コマンドを使用して PostgreSQL のステータスを確認する
  4. pg_isready コマンドを使用して PostgreSQL のステータスを確認する
  5. PostgreSQL のステータスを確認するその他のコマンド
  6. まとめ
macOS で PostgreSQL サーバーが実行されているかどうかを確認する

この記事は、MAC オペレーティング システムで PostgreSQL サーバーのステータスを確認するのに役立つように特別にまとめられています。 この記事では、いくつかの BASH コマンドについて言及しています。

これらを使用して、PostgreSQL のステータスと実行中かどうかを確認できます。

注: この記事全体で言及されている BASH コマンドは、すべてのオペレーティング システムで機能するとは限りません。 ただし、macOS ではうまく機能することが知られています。

多数の BASH コマンドが互いの代替として言及されています。 1つのコマンドが機能しない場合は、別のコマンドを実行して PostgreSQL サーバーのステータスを確認できます。

macOS で PostgreSQL サーバーが実行されているかどうかを確認する

多数のコマンドを使用でき、BASH コマンドに移行して PostgreSQL のステータスを確認できます。 この記事では、PostgreSQL が実行されているかどうかを判断するのに役立つコマンドに焦点を当てています。

BASH コマンドについて詳しく説明する前に、PostgreSQL にアクセスしようとしたときに受け取る可能性のあるエラー メッセージを見てみましょう。

エラー メッセージ

次のメッセージに目を通し、これらがあなたにとって馴染み深いものかどうかを分析してみましょう。

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

pg_ctl コマンドを使用したときに表示される別のエラー メッセージは次のとおりです。

> 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

これらは、システムで PostgreSQL を実行しようとしたときに発生する可能性のあるエラー メッセージの 2つの例です。 これらのエラーは、初期化プロセス中のパスの設定が正しくないことが原因である可能性があります。

initdb コマンドを使用して PostgreSQL データベース クラスターを作成する場合、PostgreSQL の場所を指す正しいパスを指定する必要があります。 パスの初期化にエラーがある場合は、それを修正してから、PostgreSQL が機能しているかどうかを確認する必要があります。

以下にいくつかの BASH コマンド オプションが提供されているため、それらのいずれかを選択して PostgreSQL のステータスを確認できます。 各コマンドについて詳しく説明します。

grep コマンドを使用して PostgreSQL のステータスを確認する

プロセスが実行されているかどうかを確認するのに役立つ最初の BASH コマンドは次のとおりです。

> ps auxwww | grep postgres

または、同じコマンドの別のバージョンを試すことができます。

> ps aux | grep postgres

返されたメッセージは、PostgreSQL が実行されているかどうかを識別するのに役立ちます。 PostgreSQL サーバーを起動する場合は、次のようなコマンドを探す必要があります。

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

上記のコマンドで、12 は PostgreSQL のバージョンを表します。 別のバージョンの PostgreSQL がインストールされている場合は、12 の場所に別の数字が表示されます。

PostgreSQL サーバーを起動するには、次のコマンドを使用します。

/Library/PostgreSQL/12/bin/pg_ctl start-D /Library/PostgreSQL/12/data -l postgres.log

注: /Library/PostgreSQL/12/data は、ユーザーが初期化プロセスで initdb を使用して作成した任意のデータベース クラスター ディレクトリです。

これらのコマンドは、PostgreSQL が実行されているかどうかを識別するのに役立ちます。 PostgreSQL が起動していない場合は、上記のコマンドで起動できます。

pg_ctl status コマンドを使用して PostgreSQL のステータスを確認する

PostgreSQL のステータスをチェックする別の BASH コマンドは次のとおりです。

> pg_ctl status

pg_ctl status コマンドは、postmaster プロセスの存在を確認します。 このコマンドは、プロセスが見つかった場合、実行中であることを報告します。

注: 実行中のステータスは、postmaster が他の接続を受け入れたり、さらにクエリを実行したりする準備ができていることを示しているわけではありません。

PGDATA 環境変数も、PostgreSQL のステータスを確認するためにいくつかの編集が必要になる場合があります。 これは PostgreSQL ~/.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

この後、BASH で PostgreSQL に対して show-pg-status コマンドを実行できます。

> show-pg-status
pg_ctl: server isrunning (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres

pg_ctl コマンドを使用して、PostgreSQL サーバーを手動で起動することもできます。 コマンドを実行する前に、PostgreSQL のパスを決定することが不可欠です。

パスは which postgres コマンドを使用して決定できます。 その後、PostgreSQL を手動で開始するために使用できます。

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

pg_isready コマンドを使用して PostgreSQL のステータスを確認する

注目すべきもう 1つの興味深いコマンドは、pg_isready コマンドです。 これは、PostgreSQL サーバーの接続ステータスを確認するために使用されます。

> pg_isready

pg_isready コマンドを実行すると、次のいずれかの値が返されます。

  1. 0 - サーバーが通常どおり接続を受け入れることを示します。
  2. 1 - サーバーが接続を受け入れていない場合に返されます。
  3. 2 - 接続試行後に応答が受信されなかったことを示します。
  4. 3 - 接続試行が行われなかったことを示します。 これは、無効なパラメーターの使用などのエラーが原因である可能性があります。

PostgreSQL のステータスを確認するその他のコマンド

PostgreSQL のステータスを確認するために使用できる BASH コマンドには、他にもいくつかのオプションがあります。

psql コマンドまたは pgrep postgres コマンドを使用して、PostgreSQL サーバーが MAC 上で実行されているかどうかを確認してください。

まとめ

異なるオペレーティング システムでは、同じ機能を実行するために異なるコマンドが必要です。 この記事で言及されている BASH コマンドは、macOS でうまく機能することが知られています。 ただし、これらを他のオペレーティング システムで試すこともできます。