PG_CTL(1)

NAME
pg_ctl - PostgreSQLサーバの起動、停止、再起動

SYNOPSIS

pg_ctl start [ -w ] [ -s ] [ -D datadir ] [ -l filename ] [ -o options ] [ -p path ] pg_ctl stop [ -W ] [ -s ] [ -D datadir ] [ -m
  [ s[mart] ] [ f[ast] ] [ i[mmediate] ] ] pg_ctl restart [ -w ] [ -s ] [ -D datadir ] [ -m
  [ s[mart] ] [ f[ast] ] [ i[mmediate] ] ] [ -o options ] pg_ctl reload [ -s ] [ -D datadir ] pg_ctl status [ -D datadir ] pg_ctl kill [ signal_name ] [ process_id ] pg_ctl register [ -N servicename ] [ -U username ] [ -P password ] [ -D datadir ] [ -w ] [ -o options ] pg_ctl unregister [ -N servicename ]

説明

pg_ctlはPostgreSQLのバックエンドサーバ(postmaster(1))を起動、停止、再起動、あるいは稼働中のサーバの状態を表示するためのユーティリティです。 サーバは手動で起動することも可能ですが、pg_ctlはログ出力のリダイレクトや、ターミナルとプロセスグループの的確な分離などの作業をカプセル化します。 更にシャットダウン制御のための便利なオプションも提供します。

startモードでは、新しいサーバが立ち上がります。 サーバはバックグラウンドで起動され、標準入力は/dev/nullに接続されます。 標準出力と標準エラーは、(-lオプションが使われた場合)ログファイルに追加されます。 そうでない場合はpg_ctlの標準出力(標準エラー出力ではありません)にリダイレクトされます。 ログファイルを指定しない場合、pg_ctlの標準出力は、ファイルにリダイレクトするか、例えばrotatelogsといったログ回転プログラムのような別プロセスにパイプで渡すべきです。 そうしないと、postmasterは出力を(バックグラウンドから)制御端末に書き出すので、シェルのプロセスグループから切り離せません。

stopモードは、指定されたデータディレクトリで稼働しているサーバを停止(シャットダウン)します。 -mオプションで3つの異なる停止方式を選択することができます。 ``Smart''モードは全てのクライアントが切断するまで待ちます。 これがデフォルトです。 ``Fast''モードはクライアントが切断するまで待ちません。 全ての実行中のトランザクションはロールバックされ、クライアントとの接続は強制的に切断され、その後サーバの停止が行なわれます。 ``Immediate''モードは、クリーンアップ処理なしで、全てのサーバプロセスを中断します。 この指定により、再起動時に回復処理が実行されることになります。

restartモードは、効果的に停止を行い、そして次に起動を実行します。 これはpostmasterコマンドラインオプションの変更を可能にします。

reloadモードは単にpostmasterにSIGHUPシグナルを送り、(postgresql.conf、pg_hba.confなどの)設定ファイルを再度読み込ませます。 これにより、完全な再起動をすることなく、設定ファイルのオプションの変更を反映させることができます。

statusモードは指定したデータディレクトリでサーバが起動しているかを確認します。 起動している場合はPIDと、サーバを起動する時に使われたコマンドラインオプションを表示します。

killによって指定したプロセスにシグナルを送信することができます。 これは特に、killを持たないMicrosoft Windowsで有用です。 サポートするシグナル名の一覧は--helpを使用して確認してください。

registerモードにより、Microsoft Windows上でシステムサービスを登録することができます。

unregisterにより、過去にregisterコマンドにより登録された、Microsoft Windows上のシステムサービスを登録解除することができます。

オプション

-D datadir
    データベースファイルのファイルシステム上の場所を指定します。 これが省略された場合、PGDATA環境変数が使われます。

-l filename
    サーバログ出力をfilenameに追加します。 そのファイルが存在しない場合は作成されます。 umaskは077に設定されるため、他のユーザからのログファイルへのアクセスはデフォルトでは許可されません。

-m mode
    停止(シャットダウン)モードを指定します。 modeはsmart、fast、またはimmediate、もしくはこれらの3つのうちのどれかの最初の文字になります。

-o options
    直接postmasterに渡されるオプションを指定します。 このオプションは通常、1つのグループとして渡されることを保証するために、単一引用符または二重引用符で囲まれます。

-p path
    postmasterの実行プログラムの位置を指定します。 デフォルトではpostmasterの実行プログラムはpg_ctlと同じディレクトリにあるものと仮定され、もしなければ構築時に指定したインストールディレクトリとなります。 このオプションは何か異例なことをしていてpostmasterが見つからないというようなエラーが出ない限り、使う必要はありません。

-s  エラーメッセージのみを表示し、その他の情報を表示しません。

-w  起動もしくは停止処理が完了するのを待ちます。 60秒でタイムアウトします。 停止(シャットダウン)処理のデフォルトです。 停止に成功したかどうかは、PIDファイルの削除により分かります。 起動の際は、psql -lで成功したかどうかが分かります。 pg_ctlはpsql用の適切なポートを使用しようとします。 PGPORT環境変数があれば、それが使用されます。 さもなくば、postgresql.confファイルで設定されたポートがあるか確認します。 どちらも使用されない場合は、PostgreSQLのコンパイル時のデフォルトポートが使用されます。(デフォルトは5432です。) 待機している場合、pg_ctlは、起動もしくは停止が成功したかどうかに基づいた終了コードを正しく返します。

-W  起動もしくは停止が完了するのを待ちません。 起動と再起動のデフォルトです。

WINDOWS用オプション

-N servicename
    登録するシステムサービスの名前です。 この名前は、システム名としても表示名としても使用されます。

-P password
    サービスを開始するユーザ用のパスワードです。

-U username
    サービスを開始するユーザのユーザ名です。 ドメインユーザの場合、DOMAIN\usernameという書式を使用してください。

環境

PGDATA
    デフォルトのデータ保存場所です。

PGPORT
    psql(1)用のデフォルトポートです。(-wオプションで使用されます。)

その他についてはpostmaster(1)を参照してください。

ファイル

postmaster.pid
    データディレクトリにこのファイルがあるかどうかによって、pg_ctlはサーバが現在稼働中か否かを決定します。

postmaster.opts.default
    このファイルがデータディレクトリにあれば、pg_ctl(のstartモード)は、-oで上書きされるものを除き、このファイルの内容をオプションとしてpostmasterに渡します。

postmaster.opts
    このファイルがデータディレクトリにあれば、pg_ctl(のrestartモード)は、-oで上書きされるものを除き、このファイルの内容をオプションとしてpostmasterに渡します。 また、このファイルの内容がstatusモードで表示されます。

postgresql.conf
    データディレクトリに置かれるこのファイルは、startモードで-wが使用された時にpsqlで使用する適切なポートを見付けるために解析されます。

注釈

完全な起動を行うための待機は洗練された操作ではなく、もしアクセス制御の設定が、ローカルクライアントが(パスワード認証などの)手動による対話無しでは接続できないようになっていた場合には失敗します。

例

  サーバの起動

サーバを起動します。

$ pg_ctl start

以下はサーバが立ち上がるまでブロックする、サーバの起動例です。

$ pg_ctl -w start

ポート5433を使いfsync無しでサーバを起動します。

$ pg_ctl -o "-F -p 5433" start

  サーバの停止

$ pg_ctl stop

これはサーバを停止します。 -mスイッチを使うとどのようにバックエンドを停止(シャットダウン)させるかを制御できます。

  サーバの再起動

この手順はサーバを停止して再度起動させるのとほぼ同じですが、違うのは、pg_ctlが以前起動していたインスタンスに渡されていたコマンドラインオプションを保存し再利用することです。 下記はサーバを再起動するもっとも簡単な方法です。

$ pg_ctl restart

再起動の際にサーバのシャットダウンを待ってから立ち上げを行なう方法です。

$ pg_ctl -w restart

以下はポート5433を使って再起動し、再起動後にfsyncを無効にする方法です。

$ pg_ctl -o "-F -p 5433" restart

  サーバの状態表示

下記はpg_ctlからの状態の出力の例です。

$ pg_ctl status
pg_ctl: postmaster is running (pid: 13718)
Command line was:
/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'

これは再起動(restart)モードで呼び出されるコマンドラインです。

関連項目

postmaster(1)