Hitachi

ノンストップデータベース HiRDB Version 9 コマンドリファレンス(UNIX(R)用)


2.45.1 pditvtrcの形式と規則

〈この項の構成〉

(1) 機能

指定したコマンドを,指定した秒間隔ごとに実行して,標準出力,標準エラー出力,及び終了ステータスをファイルに出力します。

(2) 実行者

権限がないユーザでも実行できます。ただし,pditvtrcコマンド中に指定するコマンドについては,そのコマンドの実行権限に従います。

(3) 形式

 pditvtrc 秒間隔 出力ファイル接頭辞 ファイルサイズ 保有世代数
 
     コマンド 〔arg1 〔arg2〕 …〕

(4) コマンド引数

(a) 秒間隔

指定したコマンドを実行する間隔を秒単位で指定します。秒間隔は0以上(0の場合は連続実行となります)の整数で指定してください。

指定した秒間隔以内に,指定したコマンドが終了しない場合,秒間隔の時間計測は停止します。指定したコマンドが終了すると,次のコマンドが実行され,同時に秒間隔の時間計測が再開されます。また,指定したコマンドが秒間隔以内に終了する場合でも,指定した秒間隔と誤差が発生することがあります。

(b) 出力ファイル接頭辞

出力ファイルの接頭辞を指定します。

実際の出力ファイル名は”出力ファイル接頭辞XX”となります(00≦XX<保有世代数)。XXは,pditvtrcコマンドの開始時点で”出力ファイル接頭辞XX”がある場合には,出力ファイルのうちで最も新しいものを”出力ファイル接頭辞YY”として,YY+1から始まります。ただし,YY+1≧保有世代数の場合,及び”出力ファイル接頭辞XX”の出力ファイルがない場合は,”出力ファイル接頭辞00”から始まります。

指定したコマンドの実行後に,出力ファイルが指定したファイルサイズを超えた場合,出力ファイルをスワップして,”出力ファイル接頭辞XX”のXXをインクリメントした出力ファイル名に,指定したコマンドの結果を出力します。ただし,XX=保有世代数に達した場合は,ラップアラウンドして再度00となります。XXがラップアラウンドした場合,前回の出力ファイルは上書きされます。

出力ファイルは,一つの出力ファイルが指定したファイルサイズを超えるたびにスワップされ,最大で保有世代数分保持されます。

(c) ファイルサイズ

出力ファイルのファイルサイズの上限をメガバイト単位で指定します。

指定したコマンドの実行後に,カレントの出力ファイル名”出力ファイル接頭辞XX”のファイルサイズがここで指定したファイルサイズを超えた場合,カレント出力ファイルをスワップします。

(d) 保有世代数 〜((2〜100))

保持しておく出力ファイルの世代数を指定します。

世代数は実際の出力ファイル名に反映されます。出力ファイルの世代数は無限ですが,出力ファイルの接尾辞が00≦XX<保有世代数の範囲であるため,新しいものから最大で保有世代数分の出力ファイルが保持されることになります。

(e) コマンド 〔arg1 〔arg2〕…〕

実行するコマンドとその引数を指定します。

コマンドラインの文法は,通常のコマンドと同じです。コマンドには,HiRDBの運用コマンド以外にも任意のコマンドを指定できます。

(5) 規則

  1. pditvtrcコマンドは,HiRDBの稼働に関係なく実行できます。ただし,pditvtrcコマンド中に指定するコマンドについては,そのコマンドの規則に従います。

  2. pditvtrcコマンドは任意のサーバマシンから実行してください。ただし,pditvtrcコマンド中に指定するコマンドについては,そのコマンドの規則に従います。

  3. pditvtrcコマンドを実行すると,ファイルサイズ×保有世代数以上の実行結果を出力する場合があるので,出力先の空き容量には十分注意してください。また,HiRDB運用ディレクトリ($PDDIR),及びOSの運用ディレクトリ(/tmp,/varなど)が満杯になった場合,HiRDB及びOSが正常に動作しなくなることがあります。そのため,これらのディスクとは異なるディスクに実行結果を出力することをお勧めします。

  4. pditvtrcコマンドは,同じ出力ファイル接頭辞に対して複数同時実行しないように,”出力ファイル接頭辞.lck”という名称の排他用ディレクトリを作成します。pditvstopコマンド,SIGTERMシグナル,及びSIGQUITシグナルでの終了の場合は排他を解放しますが,SIGKILLシグナルなどで強制終了すると排他が残ることがあるので強制終了はしないでください。排他ディレクトリが残った場合は,psコマンドで該当プロセスがないことを確認してから,排他ディレクトリをrm -r 出力ファイル接頭辞.lckで削除してください。

  5. pditvtrcコマンドを実行すると,インターバル動作をするバックグラウンドプロセスを起動し,pditvtrcコマンド自身を終了します。このバックグラウンドプロセスは,pditvtrcコマンドを実行したターミナルを終了しても動作を続けます。動作を終了させる場合は,pditvstop 出力ファイル接頭辞を実行する必要があります。また,”出力ファイル接頭辞.lck又はpid”ファイルが消失しているなどの理由によってpditvstopコマンドが実行できない場合は,psコマンドなどでPIDを確認してから,kill PID(kill -TERM PID)で終了してください。このバックグラウンドプロセスは,SIGQUITシグナルもSIGTERMシグナルと同様に扱います。

  6. pditvtrcコマンド実行中に,pdstartコマンドを実行すると,HiRDBの開始に失敗することがあります。開始に失敗した場合,pdstartコマンドを再度実行してください。また,pditvtrcコマンドでHiRDBのコマンドを実行する場合,HiRDBを停止する前にpditvstopコマンドを実行してください。

  7. 指定したコマンドが10回連続で0以外のリターンコードで終了した場合,pditvtrcコマンドは終了します。

(6) 注意事項

  1. pditvtrcコマンドのリターンコードを次に示します。

    0:正常終了

    1:同一の出力ファイルを持つpditvtrcコマンドが既に動作中の場合,又は出力ファイル,排他用ディレクトリ”出力ファイル接頭辞.lck”が作成できない場合

(7) 出力形式

 YYYY/MM/DD HH:MM:SS   ......................................1
 "コマンド  arg1  arg2 ..."の標準出力+標準エラー出力   .....2
 RC=コマンド リターンコード   ...............................3
        :

[説明]

  1. 指定したコマンドの実行日時

  2. “コマンド arg1 arg2 …“の標準出力及び標準エラー出力

  3. “コマンド arg1 arg2 …“のリターンコード

2及び3については,各コマンドのマニュアル(HiRDBのコマンドの場合はこのマニュアルの各コマンドの説明)を参照してください。

(8) 使用例

例1:

コマンドごとにpditvtrcコマンドを実行する例を次に示します。

コマンド実行例:
 pditvtrc 60 /outputdir/rpc 10 2 pdls -d rpc -a
 pditvtrc 60 /outputdir/trn 10 2 pdls -d trn
 pditvtrc 60 /outputdir/prc 10 2 pdls -d prc
 pditvtrc 60 /outputdir/lck 10 2 pdls -d lck
 pditvtrc 60 /outputdir/buf 10 2 pdbufls
[説明]

各pditvtrcコマンドは,それぞれ異なる出力ファイルに,60秒ごとに起動する各コマンドの実行結果を追加出力します。各出力ファイルの最大ファイルサイズは10メガバイトで,各出力ファイルの保有世代数は2世代となります。

例2:

複数のコマンドを1回のpditvtrcコマンドで実行する例を次に示します。

コマンド実行例:
 pditvtrc 60 /outputdir/trc 20 6 trcscript
trcscriptの内容:
 #!/bin/posix/sh
 SCRIPT_RC=0
 
 # date '+%Y/%m/%d %H:%M:%S' 最初コマンド開始時間はpditvtrcが表示する
 pdls -d rpc -a
 RC=$?
 echo "RC=$?"
 if [[ $RC != 0 ]] ; then SCRIPT_RC=1; fi
 
 #date '+%Y/%m/%d %H:%M:%S' pdls -d trnは自ら実行時間を表示する
 pdls -d trn
 RC=$?
 echo "RC=$?"
 if [[ $RC != 0 ]] ; then SCRIPT_RC=1; fi
 
 #date '+%Y/%m/%d %H:%M:%S' pdls -d prcは自ら実行時間を表示する
 pdls -d prc
 RC=$?
 echo "RC=$?"
 if [[ $RC != 0 ]] ; then SCRIPT_RC=1; fi
 
 date '+%Y/%m/%d %H:%M:%S'
 pdls -d lck
 RC=$?
 echo "RC=$?"
 if [[ $RC != 0 ]] ; then SCRIPT_RC=1; fi
 
 #date '+%Y/%m/%d %H:%M:%S' pdls -d prcは自ら実行時間を表示する
 pdbufls
 RC=$?
 echo "RC=$?"
 if [[ $RC != 0 ]] ; then SCRIPT_RC=1; fi
 
 exit $SCRIPT_RC
[説明]

60秒ごとにシェルスクリプトtrcscriptを実行して,その実行結果を出力ファイル/outputdir/trcに追加出力します。出力ファイルのファイルサイズは20メガバイトで,保有世代数は6世代となります。