PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# pg_ctl

## 名前

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

## 概要

`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はPostgreSQLのバックエンドサーバ(postmaster)を起動、停止、再起動、あるいは稼働中のサーバの状態を表示するためのユーティリティです。 サーバは手動で起動することも可能ですが、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`を使用して確認してください。

## オプション

`-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`

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

## 環境

`PGDATA`

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

`PGPORT`

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

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

## ファイル

`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

前のページ | ホーム | 次のページ
pg_controldata | 上に戻る | pg_resetxlog