postgres [-A 0 | 1 ] [-B nbuffers] [-c name=value] [-d debug-level] [--describe-config] [-D datadir] [-e] [-E] [-f s | i | t | n | m | h ] [-F] [-N] [-o filename] [-O] [-P] [-s | -t pa | pl | ex ] [-S sort-mem] [-W seconds] [--name=value] database
postgres [-A 0 | 1 ] [-B nbuffers] [-c name=value] [-d debug-level] [-D datadir] [-e] [-f s | i | t | n | m | h ] [-F] [-o filename] [-O] [-p database] [-P] [-s | -t pa | pl | ex ] [-S sort-mem] [-v protocol] [-W seconds] [--name=value]
postgres 実行プログラムは、問い合わせ処理を実際に行う PostgreSQL サーバプロセスです。 通常、これが直接呼び出されることはありません。 代わりに postmaster マルチユーザサーバが起動されます。
上から 2 番目の形式は、postgres がどのように postmaster から呼び出されるかを表しています (これは概念的なものにすぎません。 なぜなら postmaster と postgres は実際には同じプログラムだからです)。 このプログラムはこのような方法で直接的に呼び出されるべきではありません。最初の形式はサーバを対話的なシングルユーザモードで直接呼び出します。このモードの主な使い道は、initdb によるブートストラッピングです。デバッグのためや災害からの復旧のために使用されることもあります。
シェルから対話的モードで呼び出された場合、ユーザは問い合わせを入力し、結果はスクリーン上に表示されますが、エンドユーザよりも開発者にとってより便利な形式が使われます。 しかし、単一ユーザのサーバはサーバのデバッグにはふさわしくありません。 なぜなら現実的なプロセス間の通信とロックは起こらないからです。
スタンドアロンサーバを起動する際、セッションユーザは、ユーザ ID 1 と設定されます。 このユーザは実際に存在していなくてもかまいません。 ですので、スタンドアロンサーバは、システムカタログの偶発的な損害などからの復旧作業に使用することができます。 スタンドアロンモードでは、ユーザ ID 1 のユーザは、暗黙的にスーパーユーザ権限が与えられます。
postgres が postmaster から起動された場合は、postmaster により設定された全てのオプションを継承します。 更に、postgres 固有のオプションは postmaster から -o オプションで渡すことができます。
設定ファイルを設定することによって、これらのオプションを入力する手間を省くことができます。 詳細は 項16.4 を参照して下さい。 いくつかの (安全な) オプションは接続しているクライアントからアプリケーションに依存する方法で設定することができます。 例えば、環境変数 PGOPTIONS が設定されると、libpq に基づくクライアントは、その文字列をサーバに渡し、サーバはそれを postgres のコマンドラインオプションとして解釈します。
-A、-B、-c、-d、-D、-F、および --name の各オプションは、-d 0 が postmaster のサーバログレベルのpostgresへの伝搬を禁止するという点を除き、postmaster の場合と同じ意味です。
デフォルト日付データ形式を "ヨーロッパ式"、つまり、日付の入力形式の順番が DMY にします。 また、これによりある日付出力の書式において日が月より前に表示されるようになります。 詳細は 項8.5 を参照してください。
全てのサーバログを filename に送ります。 postgresが postmaster の下で稼動している場合、このオプションは無視され、その標準エラー出力 stderr はpostmaster から引き継がれます。
システムテーブルの読み込みの際にシステムインデックスを無視します。 (しかし、このテーブルの更新の際にはインデックスは更新されます。) これは破損したシステムインデックスからの復旧の際に有用です。
時間情報と他の統計をそれぞれのコマンドの最後に表示します。これはベンチマーク、もしくはバッファ数の調整に便利です。
一時ディスクファイルを再ソートする前に、内部ソートとハッシュに使われるメモリ量を指定します。その値はキロバイトで指定され、デフォルトでは 1024 です。複雑な問い合わせでは、いくつかのソートもしくはハッシュが並行して実行されている可能性があり、データを一時ファイルに挿入し始める前に、それぞれが sort-mem キロバイト分だけ使うことができるということに注意してください。
アクセスされるデータベースの名前を指定します。もしそれが省略されると、デフォルトはユーザ名になります。
すべてのコマンドをエコー表示します。
改行を文の区切り文字として使うことを無効にします。
その他にも、主にデバッグ用に使われる、いくつかのオプションを指定することができます。これらは PostgreSQL システム開発者による使用のためだけにここにリストされています。 これらのオプションはむやみに使用しないで下さい。更に、これらのオプションのいずれも将来のリリースでは予告なしに廃止されるか変更される可能性があります。
特定のスキャンと結合メソッドの使用を禁止します。s と i は順スキャンとインデックススキャンをそれぞれ無効にし、n, m そして h は、ネストループ、マージ、そしてハッシュ結合をそれぞれ無効にします。
注意: 順スキャンとネストループのどちらも完全に無効にすることはできません。 -fs オプションと -fn オプションは単に、もし他の選択がある場合は、オプティマイザがこれらのプラン型を使わないようにするというだけです。
システムテーブルの構造を変更することを可能にします。これは initdb によって使われます。
このプロセスが postmaster によって起動されたことを示し、また、使用するデータベースを指定します。等々。
それぞれの主要なシステムモジュールと関連する、それぞれの問い合わせのタイミング統計を表示します。このオプションは -s オプションと一緒に使うことはできません。
このセッションで使われるフロントエンド/バックエンドプロトコルのバージョン番号を指定します。
このオプションが入力されると、プロセスは指定された秒のあいだスリープに入ります。これは開発者に、サーバプロセスにデバッガを接続する時間を与えます。
このオプションは、サーバの内部設定変数、説明、デフォルトをタブ区切りのCOPY書式で出力します。 これは主に、管理ツールでの使用のために設計されました。
実行中の問い合わせを中止するには、そのコマンドを実行しているpostgresプロセスにSIGINTシグナルを送信してください。
postgresに設定ファイルを再読み込みするよう指示するには、SIGHUPシグナルを送信してください。 通常は、この代わりにpostmasterがSIGHUPを送信するのに最善です。 この場合、postmasterは、それぞれの子プロセスにSIGHUPを順番に送信します。 しかし、特定の1つのみのpostgresに、設定ファイルを再読み込みさせたい場合もあります。
postmaster では、postgres プロセスを通常どおりに終了するには SIGTERM を、通常のクリーンアップを行なわずに終了するには SIGQUIT を使用します。 これらは ユーザが使用すべきではありません。 また、postgresにSIGKILLシグナルを送信するのは好ましくありません。 postmasterはこれをpostgresのクラッシュとして解釈し、標準のクラッシュからの復旧手続きの一部として、強制的に全ての共通の親プロセスを持つpostgresプロセスを終了させます。
下記のコマンドラインによりスタンドアロンサーバを起動します。
postgres -D /usr/local/pgsql/data other-options my_database
データベースディレクトリの正確なパスを -D で指定、もしくは、環境変数 PGDATA が設定されているか確認して下さい。 また、作業対象とするデータベースの名前を指定して下さい。
通常、スタンドアロンサーバでは、改行をコマンド入力の終りとみなします。 psql におけるセミコロンのような高度な機能はありません。 コマンドが複数行に渡る場合は、最終行を除き、改行を入力する前にバックスラッシュを入力しなければなりません。
ただし、-N コマンドラインスイッチを使用する場合、改行はコマンド入力の終りではなくなります。 この場合、サーバは標準入力をファイル終端 (EOF) マークまで読み取り、その入力を 1 つのコマンド文字列として処理します。 この場合は、バックスラッシュと改行の組み合わせは特別扱いされません。
セッションを終了するには、 EOF (通常 Control+D) を入力します。 -N を使用している場合の終了には、EOF を 2 度連続して入力する必要があります。
スタンドアロンサーバには、高度な行編集機能が用意されていないことに注意して下さい (例えばコマンド履歴はありません)。