これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドcook_rshです。
プログラム:
NAME
クック-負荷分散rsh
SYNOPSIS
調理する [ オプション...] 建築 command [ 引数...]
調理する -ヘルプ
DESCRIPTION
この 調理する プログラムはラッパーです rsh(1)単純な負荷分散を行います。 取得します
を実行することによるその負荷情報 RUP(1)コマンド、および最適なホストを選択します
指定したアーキテクチャを使用し、そのすべてのホストの負荷を最小限に抑えます
建築。
最初のコマンドライン引数は、次のリストを取得するために使用されるアーキテクチャ名です。
可能なホスト。 そのリストから RUP(1)コマンドを実行して、ホストを判別します。
最小の負荷。これは、最終的な引数の最初の引数として使用されます。 rsh(1)コマンド。
クックブック
このプログラムを利用するには、クックブックのどこかに行を追加する必要があります
読む
parallel_rsh = "cook";
選択したホストが呼び出し元(ビルドホスト)と同じである場合、このプログラムは実行するだけです
rshをスキップするコマンド。 したがって、これをXNUMX台のマシンネットワークで使用するのに費用はかかりません。
リモートホストに配布するレシピごとに、ホストバインディングを追加する必要があります
に属性します。 典型的な使用法は、マルチアーキテクチャビルドがある場合です。
%1 /%0%.o:%0%.c
ホストバインディング%1 {
cc -o [target] -c [resolve%0%.c]; }
ここに示すレシピでは、各アーキテクチャのオブジェクトファイルが別々に配置されています
アーキテクチャ固有のディレクトリツリー。 アーキテクチャ名(%1)はホストで使用されます-
バインディング。これにより、コンパイルがそのアーキテクチャのすべてのマシンに負荷分散されるようになります。
特定のホストで実行するコマンドが必要な場合(たとえば、特定のホストで実行するため
アプリケーションライセンスが存在します)、ホストバインディングでホスト名を使用するだけです
アーキテクチャ名ではなく、属性。
定義 、 クラス
この /host_lists.pl ファイルが存在し、次の目的で使用される変数定義が含まれていることが期待されます
ホストが特定のアーキテクチャのメンバーであるかどうかを判別します。
この /host_lists.pl ファイルはperlHOL「リストのハッシュ」を定義しますハッシュは%ArchNamesであり、
ユーザーが見たいアーキテクチャの名前をマップし、実際の参照としてリストします
リストが保存されます。
各アーキテクチャの名前は任意の形式にすることができますが、慣例では
「sparc-sun-solaris2.8」などのGNUish名。
アーキテクチャごとに、機能に応じてXNUMXつ以上のマシンのリストを定義します
各マシンセットで可能です。 これは、必要に応じて単純または複雑にすることができます。 の形
リスト変数名は、任意の有効なperl識別子にすることができますが、
ダッシュ付きのアーキテクチャ名がアンダーバーに変更され、ドットが削除され、タイプが追加されました。 にとって
たとえば、Solarisホストを次のように定義します。
@ sparc_sun_solaris28_hosts =(
"ミッキー"、 "ミニー"、 "スクルージ");
そしてLinuxホストは:
@ i386_linux22_hosts =(
"間抜け"、 "スクルージ");
さまざまなタイプのジョブに対してさまざまなマシンのセットを定義する必要がある場合は、
の名前に接尾辞を追加します ホストバインディング 各レシピのディレクティブ、および
ここに同じ接尾辞が付いたリストがあります。
引数名をリストにマップするハッシュは、次のように定義されます。
%ArchNames =(
"sparc-solaris2.8"、=> @ sparc_solaris28_hosts、
"i586-unknown-linux22"、=> @ i386_linux22_hosts、);
もちろん、アーキテクチャ名がどのように見えるべきかについてユーザーが異なる意見を持っている場合
同様に、「エイリアス」マッピングも定義できます。
"sun4-SunOS-5.8"、=> @ sparc_solaris28_hosts、
または、レベルは重要ではないので、定義します
"sparc-solaris"、=> @ sparc_solaris28_hosts、
"sparc-solaris2.7"、=> @ sparc_solaris28_hosts、
また、このリストを空にすることはできません。
そして最後に、Perlのおかげで、ファイルの最後の行は次のようになります。
1; あいまいで魔法の理由で。
シスログ ロギング
ビルド中に見られる典型的なコマンドは次のようになります
sh -c'cd /aegis/dd/gumby2.2.C079 && \ sh -ce /aegis/dd/gumby2.2.C079/.6.1; \
エコー$? > /aegis/dd/gumby2.2.C079/.6.2 '
そのため、コマンドからプロジェクト/変更を非常に簡単に抽出し、次の方法でログに記録できます。
syslogは簡単な追加です。
OPTIONS
このコマンドには通常、オプションはありません。
-h ヘルプ-使用情報を表示する
-vP 詳細-レポートの選択
-Tn テスト用のトレース値
onworks.netサービスを使用してcook_rshをオンラインで使用する