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

# pg_ctl

## 名前

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

## 概要

`pg_ctl` start [-w] [-t `seconds`] [-s] [-D `datadir`] [-l `filename`] [-o `options`] [-p `path`] [-c]
`pg_ctl` stop [-W] [-t `seconds`] [-s] [-D `datadir`] [-m s[mart] | f[ast] | i[mmediate] ]
`pg_ctl` restart [-w] [-t `seconds`] [-s] [-D `datadir`] [-c] [-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] [-t `seconds`] [-o `options`]
`pg_ctl` unregister [-N `servicename`]

## 説明

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

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

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

`restart`モードは、効果的にサーバを停止して、その後、再起動します。 この時、`postgres`コマンドラインオプションを変更することができます。

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

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

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

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

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

## オプション

`-c`

  実現可能なプラットフォームにおいて、サーバクラッシュ時にcoreファイルを生成できるように関連するソフトリソース制限を上げます。 障害が起きたサーバプロセスから得られたスタックトレースを行うことができますので、問題のデバッグや診断の際に有用です。

`-D `datadir``

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

`-l `filename``

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

`-m `mode``

  停止（シャットダウン）モードを指定します。 `mode`は`smart`、`fast`、`immediate`、もしくはこの3つのモード名の最初の1文字をとることができます。

`-o `options``

  直接`postgres`に渡されるオプションを指定します。

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

`-p `path``

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

`-s`

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

`-t`

  起動または停止の待機が完了するまでの秒数。

`-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用のデフォルトポートです（-wオプションで使用されます）。

この他のサーバ変数についてはpostgresを参照してください。 また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します（項30.13を参照してください）。

## ファイル

`postmaster.pid`

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

`postmaster.opts`

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

`postgresql.conf`

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

## 注釈

完全な起動を行うまでの待機操作は、十分に設計されていません。アクセス制御の設定として、ローカルクライアントから対話的に操作を行わなければ接続できないようになっている場合は失敗する可能性があります（パスワード認証が必要な場合など）。 この他の接続用変数については、項30.13を参照してください。 また、パスワードについては項30.14も参照してください。

## 例

### サーバの起動

サーバを起動します。

    $ 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: server is running (pid: 13718)
    Command line was:
    /usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'

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

## 関連項目

postgres

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