macOS で PostgreSQL サーバーが実行されているかどうかを確認する
- macOS で PostgreSQL サーバーが実行されているかどうかを確認する
-
grep
コマンドを使用して PostgreSQL のステータスを確認する -
pg_ctl status
コマンドを使用して PostgreSQL のステータスを確認する -
pg_isready
コマンドを使用して PostgreSQL のステータスを確認する - 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
コマンドを実行すると、次のいずれかの値が返されます。
0
- サーバーが通常どおり接続を受け入れることを示します。1
- サーバーが接続を受け入れていない場合に返されます。2
- 接続試行後に応答が受信されなかったことを示します。3
- 接続試行が行われなかったことを示します。 これは、無効なパラメーターの使用などのエラーが原因である可能性があります。
PostgreSQL のステータスを確認するその他のコマンド
PostgreSQL のステータスを確認するために使用できる BASH コマンドには、他にもいくつかのオプションがあります。
psql
コマンドまたは pgrep postgres
コマンドを使用して、PostgreSQL サーバーが MAC 上で実行されているかどうかを確認してください。
まとめ
異なるオペレーティング システムでは、同じ機能を実行するために異なるコマンドが必要です。 この記事で言及されている BASH コマンドは、macOS でうまく機能することが知られています。 ただし、これらを他のオペレーティング システムで試すこともできます。