OpenVMS
ユーザーズ・マニュアル


前へ 次へ 目次 索引


18.5.4 バッチ・ジョブ属性の変更

ジョブをキューに登録しても,ジョブの実行開始前であれば, SET ENTRY または SETQUEUE/ENTRY コマンドと一緒に適切な修飾子を使用すれば,ジョブに関連する属性を変更できます。

次の例では,バッチ・ジョブをバッチ・キューに保留した状態で,バッチ・ジョブの名前を変更するために使用できる 2 種類の方法を示しています。


$ SET QUEUE/ENTRY=209/NAME=NEW_NAME SYS$BATCH


$ SET ENTRY 209 /NAME=NEW_NAME

どちらのコマンドも,ジョブ番号 209 の名前を NEW_NAME に変更します。

SET ENTRY または SET QUEUE/ENTRY コマンドで変更できる内容の一部を次に示します。修飾子の完全なリストは,『Compaq OpenVMS DCL ディクショナリ』を参照してください。 SUBMIT コマンドで指定できるほとんどの修飾子が SET ENTRY と SET QUEUE/ENTRY コマンドでも使用できます。

次のような変更を加えることができます。

18.5.5 SUBMIT コマンド修飾子

バッチ・ジョブの特性を制御するために SUBMIT コマンドに対して指定できる修飾子は次のとおりです。省略時のワーキング・セット,ワーキング・セットの超過値,ワーキング・セット・サイズ,ジョブ・スケジューリング優先順位, CPU 時間制限など,実行属性も指定できます。

/AFTER

バッチ・ジョブを実行できるようになる時間を指定する。ジョブは,指定された時間になるまでバッチ・キューに留まる。ユーザがジョブを明示的に解放するまでキューの中に保留するには, /HOLD 修飾子を使用する。保留されているジョブを解放するには,SET ENTRY/RELEASE コマンドを使用する。

/NAME

バッチ・ジョブの名前を指定する。これを指定しないと,ジョブ名の省略時の値は,ジョブの中の最初の (または唯一の) コマンド・プロシージャのファイル名になる。

/NOTE

SHOW QUEUE/FULL コマンドを実行した結果に表示されるメッセージ文字列を指定する。ジョブについての情報をオペレータやシステム管理者に伝達できるようになる。

/NOTIFY

ジョブの完了を通知するように要求する。バッチ・ジョブの実行が終了すると,システムはメッセージをターミナルに送信する。

/PARAMETERS

パラメータをバッチ・ジョブに渡す。

/NOPRINTER または /KEEP

バッチ・ジョブ・ログ・ファイルをセーブする。

/QUEUE

バッチ・ジョブを SYS$BATCH 以外のキューに送信する。リモート・ノードにあるコマンド・プロシージャを実行するには, /REMOTE 修飾子を使用する。このとき,ジョブはリモート・ノードの SYS$BATCH に送信される。

/RESTART

ジョブの実行中にシステムに障害が生じた場合に,ユーザがジョブを再開できるようにする。

/RETAIN

バッチ・ジョブが完了してもバッチ・ジョブをキューの中に残す。ジョブの完了状態を調べるには,SHOW QUEUE または SHOW ENTRY コマンドを使用する。

18.5.6 バッチ・キューの中のジョブの表示

ジョブがバッチ・ジョブ・キューに登録されていれば, SHOW ENTRY コマンドまたは SHOW QUEUE コマンドを使用してジョブの状態を監視できます。キューの中にジョブが存在しない場合には,次のメッセージが表示されます。


$  SHOW QUEUE BOSTON_BATCH
Batch queue BOSTON_BATCH, on BOSTON::

ジョブに関する完全な情報を表示するには, SHOW ENTRY または SHOW QUEUE コマンドに /FULL 修飾子を指定します。キューの中の他のジョブの状態を表示するには, SHOW QUEUE/ALL コマンドを使用します。

次の例では,エントリ番号 999 が表示されます。


$ SUBMIT EXCHAN.DAT 
Job EXCHAN (queue SYS$BATCH entry 999) started on SYS$BATCH 
$ SHOW ENTRY 999 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
    999  EXCHAN          BLASS             3  Executing 
         On batch queue SYS$BATCH 


$ SUBMIT/NOPRINTER/PARAMETER=STATS.DAT UPDATE 
Job UPDATE (queue SYS$BATCH entry 1080) started on BOSTON_BATCH 
$ SHOW QUEUE BOSTON_BATCH 
Batch queue BOSTON_BATCH on BOSTON:: 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
   1080  UPDATE          ODONNELL         36  Executing 

次の例では,/FULL 修飾子が指定されているため,BOSTON_BATCH に関する統計情報と,ジョブ番号 999 に関連する属性が表示されます。


$ SHOW ENTRY/FULL 999 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
    999  EXCHAN          BLASS             3  Executing 
         On batch queue BOSTON_BATCH 
         Submitted 11-DEC-1998 13:12 /PRIORITY=100 
         WRKD:[BLASS]EXCHAN.DAT;3 


$ SHOW QUEUE/FULL BOSTON_BATCH 
Batch queue BOSTON_BATCH, on BOSTON:: 
    /BASE_PRIORITY=3 /JOB_LIMIT=5 /OWNER=[EXEC] /PROTECTION=(S:E,O:D,G:R,W:W) 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
   1080  UPDATE          ODONNELL         36  Executing 
    Submitted 11-DEC-1998 10:46 /KEEP /PARAM=("STATS.DAT") /NOPRINTER /PRIO=4 
    _BOSTON$DQA2:[ODONNELL]TEMP.COM;1 (executing) 

次の例では,SHOW QUEUE/ALL コマンドを使用して, BOSTON_BATCH キュー内のすべてのジョブを表示します。


$ SHOW QUEUE/ALL BOSTON_BATCH 
Batch queue BOSTON_BATCH on BOSTON:: 
 
  Entry  Jobname         Username             Status 
  -----  -------         --------             ------ 
    923  no privilege                         Executing 
    939  no privilege                         Holding until 11-DEC-1998 19:00 
   1080  UPDATE          ODONNELL             Executing 

特権ユーザの場合を除いて,自分のアカウントでキューに登録されたジョブの情報しか表示されないことに注意してください。

18.5.7 バッチ・ジョブの削除と終了

バッチ・ジョブは,実行前でも実行中でも削除できます。保留中またはすでにバッチ・キューで実行されている項目を削除するには, DELETE/ENTRY コマンドを使用します。自分がキューに登録しなかったジョブを削除するには,特別な特権が必要です。 DELETE/ENTRY コマンドの結果としてジョブが終了した場合は,ログ・ファイルは印刷されず,ディレクトリからも削除されません。

DELETE/ENTRY コマンドを使用してジョブを終了した場合は,オペレーティング・システムの通常のジョブ終了アクティビティが先取りされるため,異常終了として扱われます。この結果,バッチ・ジョブ・ログには,ジョブ時間と会計情報を要約した標準ログアウト・メッセージは収められません。ただし,明示的に EXIT コマンドまたは STOP コマンドを出して終了した場合やこのいずれかのコマンドを (現在の ON 状態の結果として) 暗黙に実行して終了した場合には,正常終了とみなされます。正常終了後,オペレーティング・システムは,正しいランダウンおよび会計情報プロシージャを実行します。

次のコマンドは SYS$BATCH のなかでジョブ・エントリ 210 を削除しています。


$ DELETE/ENTRY=210 SYS$BATCH

18.5.8 バッチ・ジョブの再開

バッチ・ジョブの実行中にシステムが異常終了した場合には,ジョブは完了しません。システムが回復してキューが再開されると,実行中のジョブは強制終了され,キューの中の次のジョブが実行されます。ただし,バッチ・ジョブをキューに登録するときに /RESTART 修飾子を指定しておけば,ジョブが終了する前にシステムがクラッシュしても,システムが復旧した後,そのジョブは再実行されます。

省略時の設定では,バッチ・ジョブは最初の行から再実行されます。コマンド・プロシージャにシンボルを追加すれば,別の場所から実行を再開できますが,これについては 第 15 章第 16 章 を参照してください。

システム・クラッシュ後のジョブの再開に加えて,ジョブを明示的に終了した後でもジョブを再開できます。ジョブを終了した後,同じキューまたは別のキューでジョブを再開するには, STOP/QUEUE/REQUEUE/ENTRY コマンドを使用します。

この例に示したコマンドは,SYS$BATCH のジョブ 212 を停止し, SYS$BATCH に再登録します。


$ STOP/QUEUE/REQUEUE/ENTRY=212 SYS$BATCH

このコマンドを入力するには,ジョブ 212 が SUBMIT コマンドに /RESTART 修飾子を指定して登録されていなければなりません。バッチ・ジョブを 2 度目に実行する場合,システムは,グローバル・シンボル BATCH$RESTART を使用してどこからジョブの実行を開始するかを判別します。

18.5.9 バッチ・ジョブ実行の同期化

コマンド・プロシージャの中で SYNCHRONIZE コマンドと WAIT コマンドを使用すれば,プロシージャを待ち状態に置くことができます。 SYNNCHRONIZE コマンドを指定すると,プロシージャは指定されたジョブが完了するのを待ちますが, WAIT コマンドを指定すると,指定された時間が経過するのを待ちます。

SYNCHRONIZE コマンドでジョブ名を指定する場合は,同期化するジョブがユーザ名と対応している必要があります。通常ジョブは,そのジョブをキューに登録するプロセスのユーザ名と対応しています。異なるユーザ用のジョブを同期化するには, SYNCHRONIZEコマンドに/ENTRY修飾子を付けて,ジョブ・エントリ番号を指定しなければなりません。

たとえば,2 つのジョブを同時にキューに登録して共同作業を行う場合,一方のジョブには次のコマンドを指定できます。


$ SYNCHRONIZE BATCH25 

このコマンドを実行すると,ジョブ名 BATCH25 を持つジョブの実行が完了するまで,コマンド・プロシージャの実行を継続できません。

この SYNCHRONIZE コマンドは,ジョブ 454 が完了するまで,現在のコマンド・プロシージャを待ち状態に置きます。


$ SYNCHRONIZE/ENTRY=454

図 18-1 は,並行して実行するためにキューに登録されたが,正しく実行するためには同期化しなければならないコマンド・プロシージャの例です。それぞれのプロシージャが大きなソース・プログラムをコンパイルします。

図 18-1 バッチ・ジョブ実行の同期化


例を確認するときは,次のことに注意してください。

  1. それぞれの SUBMIT コマンドで 2 つのジョブをキューに登録することが要求されている。最初のプロセスが作成される。

  2. FORTRAN コマンドの実行後,SYNCHRONIZE コマンドが実行される。ジョブ 315 が現在のジョブまたは待ち状態のジョブの場合には,ジョブ 314 は次のコマンドを実行しない。

  3. ジョブ 315 の実行が完了すると,ジョブ 314 は次のコマンドを実行する。

18.5.10 WAIT コマンドの使用方法

WAIT コマンドは,コマンド・プロシージャがディスクやテープ・ドライブなどの共用システム資源へアクセスしなければならない場合に便利です。

次の例は,テープ・ドライブの割り当てを要求するプロシージャです


$ TRY: 
$      ALLOCATE DM: RK: 
$      IF $STATUS THEN GOTO OKAY 
$      WAIT 00:05 
$      GOTO TRY 
$ OKAY: 
$ REQUEST/REPLY/TO=DISKS - 
     "Please mount BACK_UP_GMB on ''F$TRNLNM("RK")'" 
   .
   .
   .

WAIT コマンドが正常に終了しないと,プロシージャは待ち状態になります。 5 分後に,要求を再試行します。

ALLOCATE 要求の後の IF コマンドは,$STATUS の値をチェックします。 $STATUS の値が正常終了を示している場合には,コマンド・プロシージャは継続されますが,そうでない場合には,WAIT コマンドが実行されます。 WAIT コマンドは,5 分の時間間隔を指定しています。 5 分待機した後,次のコマンド GOTO が実行され,要求が繰り返されます。このプロシージャは,正常終了するまで,またはバッチ・ジョブが削除されるか終了されるまで,ループを繰り返し,デバイスを割り当てようとします。


前へ 次へ 目次 索引