Sun N1 Grid Engine 6.1 ユーザーズガイド

通常のシェルスクリプトの拡張

通常のシェルスクリプトを拡張すると、Grid Engine システムの制御下で実行されるスクリプトの動作に影響が出る場合があります。次の節では、これらの拡張機能について説明します。

コマンドインタプリタの選択方法

図 3–5 に示すように、発行時には、ジョブスクリプトファイルの処理に使用するコマンドインタプリタを指定できます。何も指定しなかった場合、コマンドインタプリタの選択方法は構成変数 shell_start_mode によって決められます。

出力のリダイレクト

バッチジョブには端末接続がないため、標準出力と標準エラー出力はファイルにリダイレクトしなければなりません。Grid Engine システムでは、出力のリダイレクト先となるファイルの場所を定義できます。出力ファイルが指定されていない場合は、デフォルトが使用されます。

ファイルの標準的な場所は、ジョブが実行される現在の作業ディレクトリです。デフォルトの標準出力ファイル名は job-name.o job-id で、デフォルトの標準エラーの出力先は job-name>.ejob-id にリダイレクトされます。job-name はスクリプトファイル名から作成するか、ユーザーが定義できます。たとえば、submit(1) のマニュアルページの -N オプションを参照してください。job-id は、Grid Engine システムによってジョブに割り当てられる一意の識別子です。

配列ジョブのタスクの場合 、タスクの識別子はドットで区切られて、これらのファイル名に追加されます。リダイレクト後の標準出力先パスは、 job-name.ojob-id.task-id> job-name.e job-id.task-id になります。詳細は、「配列ジョブの発行」を参照してください。

標準の場所が適切でない場合は、 図 3–6 のように、QMON で出力先を指定できます。また、qsub コマンドの -e-o オプションを使用して、出力先を指定することもできます。標準出力と標準エラー出力は、1 つのファイルにマージすることもできます。リダイレクトは、実行ホストごとに指定できます。その場合、ジョブが実行されるホストによって、出力するリダイレクトファイルの場所は異なります。一意のカスタマイズリダイレクトファイルパスを作成するには、qsub -e および -o オプションと一緒に使用できるダミー環境変数を使用します。次にこれらの変数の一覧を示します。

ジョブを実行すると、これらの変数に実際の値が入り、その値でリダイレクトパスが作成されます。

詳細は、qsub(1) のマニュアルページを参照してください。

有効なコメント

シェルスクリプトでは、ハッシュ記号 (#) が最初にある行はコメントとして扱われます。 ただし、Grid Engine システムは特別なコメント行を認識し、それらの行を特別な方法で使用します。そのような特別なコメントスクリプト行は、qsub コマンドのコマンド行引数リストの一部として扱われます。これらの特別なコメント行内で指定される qsub オプションも「QMON Submit Job」ダイアログボックスで解釈されます。スクリプトファイルを選択すると、対応するパラメータがプリセットされます。

デフォルトでは、特別なコメント行は #$ という接頭辞で識別されます。接頭辞は、 qsub -C コマンドで再定義できます。

このような特別なコメントの使用は、発行引数のスクリプト組み込みと呼ばれます。次に、スクリプト組み込みコマンド行オプションを利用したスクリプトファイルの例を示します。


例 3–2 スクリプト組み込みコマンド行オプションの使用


#!/bin/csh

# Grid Engine のデフォルトのシェルでなければ 
# csh を強制

#$ -S /bin/csh

# これは N1 Grid Engine 6.1 の元でサンプルの FORTRAN プログラムを
# コンパイルし、実行するスクリプトファイルの例です。
# Grid Engine に、ジョブの開始時と終了時に 
# メールを送信させるように
# します。

#$ -M EmailAddress
#$ -m b,e

# 標準出力と標準エラーのためのファイルを
# 命名します。

#$ -o flow.out -j y

# ファイルがあるディレクトリに変更します。

cd TEST

# プログラム "flow.f" をコンパイルし、
# 実行可能な "flow" と命名する必要があります。

f77 flow.f -o flow

# コンパイルを完了すると、そのプログラムを実行できます。

flow

環境変数

ジョブが実行されると、いくつかの変数がジョブの 環境にプリセットされます。