ページの先頭行へ戻る
Enterprise Postgres 12 リファレンス
FUJITSU Software

Linux5.1 cm_ctl

名前

cm_ctl - conmgrプロセスの起動、停止および状態表示

概要

cm_ctl start [-D diretory] [-W] [--complete] [-t seconds]
cm_ctl stop [-D diretory] [-W] [-m {smart | fast | immediate}] [-t seconds]
cm_ctl status [-D directory] [-t seconds] [-i {all | instance | application}]

説明

startモードは、conmgrプロセスを起動します。少なくともプライマリのインスタンスとの間で生死監視の接続が完了するまで待ってからコマンドが復帰します。--completeを指定した場合には、conmgr.confに定義されたすべてのインスタンスとの間に生死監視の接続が完了するまで待ち合わせます。これらの待ち合わせにはタイムアウトを設定できます。タイムアウトのデフォルトは60秒です。-tオプションで変更することができます。タイムアウトした場合は、単に待ち合わせを諦めるだけであり、conmgrプロセスは起動状態のままです。


stopモードは、conmgrプロセスにシグナルを送信してシャットダウンし、プロセスが消滅するまで待ち合わせます。待機時間のデフォルトは60秒です。-tオプションで変更することができます。タイムアウトした場合は、単に待ち合わせを諦めるだけです。
シャットダウンの方法には、smart、fastおよびimmediateの3通りがあり、-mオプションで指定します。smartは、conmgrプロセスを使用しているすべてアプリケーションのSQL接続がなくなるまで待ち合わせてからシャットダウンします。fastは、conmgrプロセスを使用しているすべてのアプリケーションとconmgrプロセスとの接続を強制的に切断してからシャットダウンします。結果としてアプリケーションのSQL接続はエラーを受け取ります。immediateは、ただちにconmgrプロセスを終了します。何も指定しなければ、smartモードで停止します。


statusモードは、conmgrプロセスが存在していれば、conmgrプロセスにconmgrプロセスが認識しているインスタンスとアプリケーションの情報を問い合わせて、conmgrプロセス自身の状態とともにそれらを標準出力に出力します。-iオプションによってどのような情報を問い合わせるかを指定できます。
instanceはインスタンスの情報を問い合わせます。applicationは、アプリケーションの情報を問い合わせます。allは、インスタンスとアプリケーションの情報を問い合わせます。conmgrプロセス自身の情報は常に出力されます。問い合わせの応答が返るまでの待機時間のデフォルトは60秒です。-tオプションで変更することができます。

オプション

--complete

conmgr.confに設定されたすべてのインスタンスとの間に生死監視の接続が完了するまで待ちます。-Wオプションと同時に使用した場合には、-Wオプションが優先されます。

-D directory
--directory=directory

conmgr.confが配置されたディレクトリを指定します。省略した場合には環境変数CMDATAに指定されたディレクトリを参照します。両方を省略することはできません。

-i {all | instance | application}

状態を表示する情報を指定します。

-m
--mode={smart | fast | immediate}

シャットダウンのモードを指定します。デフォルトはsmartです。

-t seconds
--timeout=seconds

操作が完了するまでの待機時間を指定します。単位は秒です。デフォルトは60秒です。

-W
--no-wait

startモードで指定すると、cm_ctlコマンドは、conmgrプロセスをforkした直後に復帰します。stopモードで指定すると、プロセスの消滅を待たずにcm_ctlコマンドは復帰します。

診断

startモード/stopモードの場合

0: 正常終了

2: タイムアウトが発生

3: 指定したディレクトリへのアクセス不可

上記以外: 上記のいずれでもない

statusモードの場合

0: 正常終了

2: タイムアウトが発生

3: 指定したディレクトリへのアクセス不可

4: conmgrプロセスが存在しない

上記以外: 上記のいずれでもない

権限

管理者(例えばLinuxのスーパーユーザー(root))はconmgrプロセスを起動することはできません。

statusモードの出力例

-iオプションに指定できる情報ブロックを1つの単位とします。
ブロック間には空行が1行があり、ブロック内には空行がありません。
カラム間や、データ間には1つ以上の空白を含みます。

$ cm_ctl status -i all
conmgr_status:
status pid
(1)    (2)
ready  3456

instance_information:
addr         port  database_attr
(3)          (4)   (5)
192.0.2.100  27500 standby
192.0.2.110  27500 primary
192.0.2.120  27500 standby
192.0.2.130  27500 unknown

application_infomation:
addr         port  pid   connected_time
(6)          (7)   (8)   (9)
127.0.0.1    12345 5678  2020-01-15 02:03:04
(1) conmgrプロセスの状態
    starting : conmgrプロセスは起動シーケンスを開始していますが、
               クライアントからの接続を受け付ける準備ができていません。
    ready    : クライアントからの接続を受け付ける準備ができています。
    stopping : 終了指示を受け取り、停止シーケンスを開始しています。
    inactive : conmgrプロセスが存在しません。
(2) conmgrプロセスのPID
(3) インスタンスのIPアドレス
(4) postmasterが待ち受けるポート番号
(5) インスタンスの状態(primary|standby|unknown)
(6) conmgrプロセスに対する接続元のIPアドレス
(7) conmgrプロセスに対する接続元の(エフェメラル)ポート番号
(8) 接続元のPID
(9) conmgrプロセスに接続した日付と時刻
    ISO8601にも準拠した年月日の後に空白が1つあり、その後にISO8601に準拠した秒精度の時刻が続きます。
    この表現は、PostgreSQLのtimestamp型の文字列表現の1つです。