する、あるいは稼働中のサーバの状態を表示するためのユーティリティです。サーバは手動で起動することも可能ですが、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モードでは指定したプロセスにシグナルを送信することができます。Windowsで有用です。サポートするシグナル名の一覧は--helpを使用して確認してください。Windows上でシステムサービスを登録することができます。Windows上のシステムサービスを登録解除することができます。datadirデータベースファイルのファイルシステム上の場所を指定します。これが省略された場合、PGDATA環境変数が使われます。filenameサーバログ出力をfilenameに追加します。そのファイルが存在しない場合は作成されます。umaskは077に設定されるため、他のユーザからのログファイルへのアクセスはデフォルトでは許可されません。mode停止(シャットダウン)モードを指定します。modeはsmart、fast、immediate、もしくはこの3つのモード名の最初の1文字です。options直接postgresに渡されるオプションを指定します。このオプションは、通常、1グループとして渡されることを保証するために、単一引用符または二重引用符で囲まれます。pathpostgresの実行プログラムの位置を指定します。デフォルトではpostgresの実行プログラムはpg_ctlと同じディレクトリにあるものと仮定されます。このディレクトリに存在しなければ、構築時に指定したインストールディレクトリが使われます。このオプションは、何か異例なことをしていてpostgresが見つからないというようなエラーが出ない限り、使う必要はありません。-sエラーメッセージのみを表示し、その他の情報を表示しません。-w起動もしくは停止処理が完了するのを待ちます。60秒でタイムアウトします。停止(シャットダウン)処理のデフォルトです。停止が成功したかどうかは、PIDファイルが削除されているかどうかによってわかります。-lが成功するかどうかによって確認できます。pg_ctlはpsqlに適切なポートを使用しようとします。PGPORT環境変数が指定されていれば、それが使用されます。なければ、postgresql.confファイルでポートが設定されていないかどうかを確認します。どちらも設定されていない場合は、PostgreSQLのコンパイル時のデフォルトのポートが使用されます(デフォルトは5432)。待機している間、pg_ctlは、起動もしくは停止が成功したかどうかに基づいて正しい終了コードを返します。-W起動もしくは停止が完了するのを待ちません。起動と再起動のデフォルトです。servicename登録するシステムサービスの名前です。この名前は、システム名としても表示名としても使用されます。passwordサービスを開始するユーザ用のパスワードです。usernameサービスを開始するユーザのユーザ名です。ドメインユーザの場合、DOMAIN\usernameという書式を使用してください。環境PGDATAデフォルトのデータ保存場所です。PGPORTpsql用のデフォルトポートです(-wオプションで使用されます)。この他のサーバ変数についてはpostgresを参照してください。このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(項29.12を参照してください)。ファイルpostmaster.pidデータディレクトリにこのファイルがあるかどうかによって、pg_ctlはサーバが現在稼働中か否かを決定します。postmaster.opts.defaultこのファイルがデータディレクトリにあれば、pg_ctl(のstartモード)は、-oで上書きされるものを除き、このファイルの内容をオプションとしてpostgresに渡します。postmaster.optsこのファイルがデータディレクトリにあれば、pg_ctl(のrestartモード)は、-oで上書きされるものを除き、このファイルの内容をオプションとしてpostgresに渡します。このファイルの内容がstatusモードで表示されます。postgresql.confデータディレクトリに置かれるこのファイルは、startモードで-wが使用された時にpsqlで使用する適切なポートを見つけるために解析されます。完全な起動を行うまでの待機操作は、十分に設計されていません。アクセス制御の設定として、ローカルクライアントから対話的に操作を行わなければ接続できないようになっている場合は失敗する可能性があります(パスワード認証が必要な場合など)。例サーバの起動サーバを起動します。start以下はサーバが立ち上がるまで待機する起動例です。startポート5433を使いfsyncなしでサーバを起動します。stopサーバを停止します。-mスイッチを使うとどのようにバックエンドを停止(シャットダウン)させるかを制御できます。サーバの再起動サーバの再起動は、サーバを停止してもう一度起動するのとほぼ同じですが、違うのは、pg_ctlが以前起動していたインスタンスに渡されていたコマンドラインオプションを保存し再利用することです。下記はサーバを再起動する最も簡単な方法です。restart再起動の際にサーバのシャットダウンを待ってから立ち上げを行う方法です。restart以下はポート5433を使って再起動し、再起動後にfsyncを無効にする方法です。下記はpg_ctlからの状態の出力の例です。'128'これは再起動(restart)モードで呼び出されるコマンドラインです。pg_resetxlog。