qtcsh は、一般的に使用されるよく知られた UNIX C 派生シェル tcsh の完全な互換性を持つ代用コマンドです。 qtcsh は、tcsh を基に構築されています。tcsh の関係については、sge-root/3rd_party の情報を参照してください。qtcsh は、Grid Engine システムを使用する適切で負荷の少ないホストに指定アプリケーションを透過的に分散する拡張機能をコマンドシェルに提供します。.qtask 構成ファイルには、リモート実行するアプリケーションと、実行ホストの選択に適用される要件が定義されています。
ユーザーに対して透過的なこれらのアプリケーションは、qrsh 機能を使用して Grid Engine システムに発行されます。qrsh は、標準出力、エラー出力と標準入力処理、およびリモート実行アプリケーションへの端末制御接続を提供します。アプリケーションをリモートで実行する場合と同一ホストでシェルとして実行する場合の明確な違いは、3 つあります。
リモートホストの方がより強力で、負荷が少なく、インストールが必要なハードウェアおよびソフトウェアリソースを備えている場合もあります。このようなリモートホストは、アプリケーションをまったく実行できない場合もあるローカルホストより、はるかに実行に適しています。
ジョブのリモート起動と Grid Engine システムを通したジョブ処理によって、若干の遅れが生じます。
管理者は、対話型ジョブ (qrsh)、よって qtcsh によるリソースの使用を制限することができます。qrsh によってアプリケーションを開始するのための適切なリソースを十分使用できない場合、またはすべての適切なシステムに負荷がかかりすぎている場合は、暗黙的な qrsh の発行は失敗し、「Not enough resources ... try later」などの該当エラーメッセージが返されます。
標準的な使用以外に、qtcsh は、サン以外のコードやツールとの統合用に適したプラットフォームでもあります。qtcsh のシングルアプリケーション実行形式は、qtcsh -c app-name です。統合環境内部でこの書式の qtcsh を使用すると、ほぼ永久的に変更の必要がない持続的なインタフェースが表示できます。すべての必要なアプリケーション、ツール、統合、サイト、およびユーザー固有の 構成までもが、適切に定義された .qtask ファイルには含まれています。さらに、すべての種類のシェルスクリプト、C プログラム、および Java アプリケーションでも使用できることもこのインタフェースの長所です。
qtcsh の呼び出しは、 tcsh の呼び出しとまったく同じです。qtcsh は、.qtask ファイルのサポートを提供し、特殊化されたシェル内蔵モードのセットを提供することで、tcsh を拡張します。
.qtask ファイルは次のように定義されます。ファイルの各行は次のような書式を持ちます。
% [!]app-name qrsh-options |
最初に付けられるオプションのエクスクラメーションマーク (!) は、グローバルクラスタ .qtask ファイルと qtcsh ユーザーの個人用 .qtask ファイルの定義が相反する場合の優先順位を定義します。グローバルクラスタファイルにエクスクラメーションマークがない場合は、ユーザーファイルの定義がグローバルクラスタファイルの定義より優先されます。グローバルクラスタファイルにエクスクラメーションマークがある場合は、グローバルクラスタファイルの定義が優先されます。
app-name は、qtcsh のコマンド行で入力された場合に、リモート実行向けに Grid Engine システムに発行されるアプリケーション名を指定します。
qrsh-options は、使用される qrsh 機能のオプションを指定します。これらの オプションは、アプリケーションのリソース要件を定義します。
アプリケーション名は、アプリケーションが .qtask ファイルで定義されるのとまったく同じようにコマンド行に表示されなければなりません。アプリケーション名の前にパス名が追加されている場合は、ローカルバイナリがアドレス指定されます。リモート実行は行われません。
csh エイリアスは、アプリケーション名との比較が行われる前に拡張されます。リモート実行向けのアプリケーションは、qtcsh コマンド行のどこででも実行できますが、特に標準入出力先のリダイレクトの前後に実行されます。
よって、次の例は有効で意味のある構文となります。
# .qtask file netscape -v DISPLAY=myhost:0 grep -l h=filesurfer |
この .qtask ファイルを前提とすると、次の qtcsh コマンド行は、
netscape ~/mybin/netscape cat very_big_file | grep pattern | sort | uniq |
暗黙的に次のような結果になります。
qrsh -v DISPLAY=myhost:0 netscape ~/mybin/netscape cat very_big_file | qrsh -l h=filesurfer grep pattern | sort | uniq |
qtcsh は複数のモードで実行でき、オンまたはオフの状態であるスイッチに影響を受けます。
コマンドのローカルまたはリモート実行。デフォルトは、リモートです。
即時実行またはバッチリモート実行。デフォルトは、即時実行です。
冗長出力または非冗長出力。デフォルトは、非冗長出力です。
これらのモードの設定は、開始時に qtcsh のオプション引数を使用して、または実行時にシェル内蔵コマンド qrshmode を使用して変更できます。詳細は、 qtcsh(1) のマニュアルページを参照してください。