これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド taktuk です。
プログラム:
NAME
TakTuk - 大規模なリモート実行展開のためのツール
SYNOPSIS
タクトゥク [-behinsvzMP] [-c コネクタ] [-d 制限] [-f ファイル名] [-g 間隔] [-l ログインする] [-m
ホスト名 [-[ 引数 ... -]]][-o ストリーム=テンプレート] [-t タイムアウト] [-u 制限] [-w サイズ] [-B
パラメータ=式] [-C 区切り文字] [-E キャラクター] [-F ファイル名] [-G ホスト名 [-[ 引数
... -]]][-L ホスト名] [-I 通訳者] [-O 区切り文字] [-R ストリーム=ファイル名] [-S ファイル]
[-T 指図] [-V 道 ] [-W スキーム] [コマンド ... ]
DESCRIPTION
タクトゥク XNUMX つ以上のコマンドのリモート実行をセットにブロードキャストするためのツールです
XNUMX つ以上の離れたマシンの。 タクトゥク ローカル並列化を組み合わせます (同時実行を使用)
導入プロセス) と作業分散 (適応型作業盗用アルゴリズムを使用)
両方を達成する スケーラビリティ 効率.
タクトゥク 特に、複数の離れたマシンが関与する対話型タスクに適しています。
並列リモート実行。 これはクラスター管理と並列の場合です。
プログラムのデバッグ。
タクトゥク また、実行するプログラムに基本的な通信層も提供します。 これ
通信層は、によって設定された通信インフラストラクチャを使用します。 タクトゥク その間
展開。 Perl 言語と C 言語の両方で利用可能であり、以下で説明されています。
タクトゥク(3)と タクトゥクコム(3)それぞれ。
OPTIONS
注意してください タクトゥク オプションはコマンドラインで指定された順序で解析されます。 これはつまり
それ タクトゥク オプションの順序に関しては POSIX に準拠していません。 これは、次のような重要な点です。
オプションは、次のオプションの動作を変更します (これらのオプションのみ - 例: -l 適用
フォローする -m オプション)。 のデフォルト設定は、 タクトゥク を使用して取得できます
「--print-defaults」オプション。 次のオプションはカテゴリごとにアルファベット順に示されています。
オーダー。
配備 OPTIONS
-b
--グループ開始
新しい展開グループを開始します。 デプロイメント グループは、ほとんどのコンテキストとして機能します。
オプション (グループ内で設定されたオプションはグループ外には影響しません)
デプロイメント・タスクのスケジューリングのための分離 (グループ内のデプロイメント・タスクは実行できません)
他のグループにデプロイされたノードによって盗まれます)。
-c コネクタ
- コネクタ コネクタ
次のリモート マシンに接続するために使用されるコネクタ コマンドを定義します。
-d 制限
- 動的 制限
以下のすべてのデプロイメントに対して動的モード (作業盗用) をオンまたはオフにします。
リモートマシンの仕様。 「limit」が正または null の場合、 タクトゥク 使用
値を最大引数とする動的モード (0 = 最大引数なし)。 否定的
「limit」の値は動的モードをオフにします。 警告、現時点では使用するのは悪い考えです。
同じコマンドラインに正の値を持つ複数の -d オプション。
-e
--エンドグループ
デプロイメントグループを終了します。
-f ファイル名
--マシンファイル ファイル名
「filename」は、リモートマシン名を含むファイルの名前です(
いくつかの「-m」オプション)。 このファイルの各行では、最初の単語が
マシン名と残りはコメントとして。
-l ログイン
- ログインする ログイン
次のホストのログイン名を設定します。 これは、コネクタ コマンドが
「-l」オプションを受け入れます (これはデフォルトの ssh の場合です)。
-m hostname
- マシーン hostname
「ホスト名」は、ホスト名が存在するリモート マシンの名前です。 タクトゥク 展開する必要があります。
「ホスト名」には、括弧内に指定された値のリストと除外リストが含まれる場合があります。
(「ホスト名の仕様」を参照)。 このような場合、デポリメントはすべてのオブジェクトに対して実行されます。
一致するホスト。 このオプションの後には、任意の数の引数を指定できます。
リモートの引数として送信される「-[」と「-]」の間 タクトゥク それ
すべてのターゲット ホストで実行されます。
-s
--自己伝播
を伝播します タクトゥク 以下のコネクタを介して実行できるため、
の必要性 タクトゥク リモートマシンへのインストール。
-z
--自己伝播しないでください
前のをキャンセルします -s オプションを選択します。
-F ファイル名
--引数ファイル ファイル名
「filename」は、追加のオプションを含むファイルの名前です。 タクトゥクを選択します。
このオプションが見つかると、ファイルの解析が行われます。
-G hostname
- ゲートウェイ hostname
と同じ -m ホスト名。ただし、デプロイされたノードは順方向専用とみなされます。
ノード: 番号は付けられず、その後の拡散の対象にもなりません。
コマンド。 例外として、 タクトゥク これらのノード上のコマンドはまだ残っています
のデプロイメント引数として指定することで可能になります。 -G オプションを選択します。
-I command
--perl-インタープリター command
「command」は、自動実行時に Perl インタープリタとして使用するコマンドの名前です。
伝播するとき、または「taktuk_perl」コマンドを使用するとき。
-L hostname
--localhost hostname
によって表示されるローカルホストの名前を変更します。 タクトゥク.
-S ファイル
- ファイル送信 ファイル
に与える タクトゥク リモート接続が成功したときに送信されるファイルのリスト。 使用
デプロイメントが遅くなる可能性があるため注意してください (ファイルは終了前に転送されます)
展開の)。 使用目的はアプリケーション データ ファイルの転送ではありません (むしろ、
このようなファイルを転送するには「put」コマンドを使用します)。 このオプションは転送に使用する必要があります
リモート ノードからさらに接続を実行するために必要なファイル。 「ファイル」
は、「local_file:remote_file」のペアのカンマ区切りのリストです。 譲渡について
それ自体は「put」コマンドとして動作します。
-T command
--taktuk-コマンド command
「コマンド」はコマンドの名前です。 タクトゥク コマンド (デフォルトは $0、起動に使用される名前)
タクトゥク)。 これは、接続後にリモートを開始するために使用されるコマンドです。 タクトゥク それは地球です。
「-s」オプションを使用する場合、このスイッチの効果は無効になることに注意してください。
-V リスト
--パス値 リスト
PATH 環境変数を指定されたリストに設定します (通常のように、コロンで区切ります)
ディレクトリ リスト) のリモート ホスト上で、 タクトゥク 接続します。 これは非常に実行されます
早期に実行され、接続時の「taktuk」または「perl」の呼び出しでも考慮されます。
時間。
COMMAND LINE 構文解析 OPTIONS
-C セパレーターセット
--コマンド区切り文字 セパレーターセット
連続する文字を区切るデフォルトの文字セットを置き換えます。 タクトゥク コマンド。
-E 文字
--エスケープ文字 文字
後続の文字を保護するために使用できるエスケープ文字を定義します。
タクトゥク 解釈。 この保護はほぼ全体に適用されます。 タクトゥク command
ライン。
-O セパレーターセット
--オプション区切り文字 セパレーターセット
読み取り時に連続する単語を区切るデフォルトの文字セットを置き換えます。
ファイルからのオプションとコマンド (「-F」スイッチを使用)。
I / O OPTIONS
-o ストリーム=テンプレート
-- 出力テンプレート ストリーム=テンプレート
指定された出力ストリームの XNUMX つに対して出力テンプレート仕様を設定します。
名前。 (テンプレートなしで) ストリーム名のみを指定すると、ストリームが無効になります。
利用可能なストリームは次のとおりです。
「connector」(コネクタコマンドからのエラー)
このストリームには、コネクタによって標準エラー出力に出力された情報が $line に含まれています
指示。 関連するフィールドには、$host、$peer、および以下にリストされているその他のフィールドが含まれます。
「error」、「output」(リモートで実行されたコマンドのエラーと出力)
これらのストリームには、実行されたコマンドによって標準出力に出力された情報が $line に含まれています
または stderr (それぞれ)。 関連するフィールドには、$host、$command、$pid などが含まれます。
以下に記載されています。
「info」(ヘルプの概要やバージョンなどの一般的な情報)
このストリームには $line に taktuk が応答として出力した情報が含まれています
「ヘルプ」や「バージョン」などのコマンド。
「message」(実行中のプロセスからのメッセージ)
このストリームの各出力には、ターゲット「output」で送信されたメッセージが $line に含まれています
(through タクトゥク 帯域外通信機能) によっていくつかのプロセスが開始されました
タクトゥク コマンド。 このストリームに関連するフィールドには、$from と $to が含まれます。
その他は以下にリストされています。
"state" (TakTuk インスタンスの内部状態)
このストリームには $line に、いくつかに一致する状態変更コードが含まれています。 タクトゥク イベント。
コードは次のとおりです。
0 - タクトゥクの準備ができました
1 - タクトゥクには番号が付けられています
2 - タクトゥクは終了しました
3 - 接続に失敗しました
4 - 接続が初期化されました
5 - 接続が失われました
6 - コマンドが開始されました
7 - コマンドが失敗しました
8 - コマンドが終了しました
9 - 番号付けの更新に失敗しました
10 - パイプ入力が開始されました
11 - パイプ入力に失敗しました
12 - パイプ入力が終了しました
13 - ファイル受信開始
14 - ファイルの受信に失敗しました
15 - ファイル受信が終了しました
16 - ファイルの送信に失敗しました
17 - 無効なターゲット
18 - ターゲットなし
19 - メッセージが配信されました
20 - 宛先が無効です
21 - 目的地はもう利用できません
22 - 待機完了
23 - 待機削減完了
関数event_msg($)をテンプレートで使用して、このコードを次のように変換できます。
イベントを説明する文字列。 関連するフィールドには、$host、$position、
$rank、$count、その他は以下にリストされています。
"status" (コマンドの終了ステータス)
このストリームには、実行されたコマンドのリターン コードが $line に含まれています。 関連する
フィールドには、$host、$pid、および以下にリストされているその他のフィールドが含まれます。
「taktuk」(内部メッセージ、警告、エラー)
このストリームには $line に、によって出力されたエラー、警告、およびデバッグ メッセージが含まれています。 タクトゥク
自体。 関連するフィールドには、$line_number、$package、および以下にリストされているその他のフィールドが含まれます。
テンプレートは、最終的に文字列として評価される Perl 式です。
表示されます。 仕様内では、状況に応じていくつかの変数が使用される場合があります。
関連するストリーム:
$command (「taktuk」や「info」ではありません)
出力を生成したコマンド ラインの実行。
$ count
の総数 タクトゥク インスタンス。
$eol
コマンド出力の終了文字に応じて、空の文字列または改行になります。
$filename (「taktuk」のみ)
が入っているファイル タクトゥク 診断関数が呼び出されました。
$from (「メッセージ」のみ)
の論理番号 タクトゥク メッセージの送信元のインスタンス。
$host
現在のコマンドを実行しているホストの名前 タクトゥク
$init_date (「コネクタ」と「状態」のみ)
1 年 1970 月 XNUMX 日からの秒単位の時間。 タクトゥク
初期化が完了しました (SSH 接続時間と自己伝播を含む)
あれば)。
$level (「taktuk」のみ)
呼び出される診断関数のレベル。
$level_name (「taktuk」のみ)
呼び出された診断関数のレベルに関連付けられた名前。
$ line
コマンドによって出力された生データ、または診断関数に渡された生データ、
末尾の改行が削除されました ($eol を参照)。
$line_number (「taktuk」のみ)
の行番号 タクトゥク 診断関数が呼び出されました。
$package (「taktuk」のみ)
が入っているパッケージ タクトゥク 診断関数が呼び出されました。
$peer (「コネクタ」と「状態」のみ)
コネクタコマンドが情報を出力したリモートマシン。
$peer_position (「コネクタ」と「状態」のみ)
リモートホストのコマンドライン上の位置。 この位置は次のように表されます。
コマンドラインで表現されたホスト階層内のパス(ドット区切り)
刻印の各レベルの位置番号)。
$peers_given (「状態」のみ)
リモートピアに与えられたリモートノードのスペース区切りのリスト。
デプロイメント (デプロイメントの状態に関係なく)。 各リモート ノードは次のように指定されます。
ホスト名とコマンドライン上の位置で構成されるコロン区切りの組み合わせ。
この変数は、イベントがストリームに出力された場合にのみ意味のある値を持ちます。
「状態」は接続損失です (イベント番号 5)。
$pid (「taktuk」や「info」ではありません)
実行された(出力を生成した)コマンドラインのpid。
$位置
現在のホストのコマンドライン上の位置。 この位置は次のように表されます。
コマンドラインで表現されたホスト階層内のパス(ドット区切り)
刻印の各レベルの位置番号)。
$ランク
の論理番号 タクトゥク 出力が収集されるインスタンス。
$reply_date (「コネクタ」と「状態」のみ)
コネクタ コマンドが応答した 1 年 1970 月 XNUMX 日からの秒単位の時間。
ローカル タクトゥク インスタンス (これには初期化は含まれないことに注意してください)
リモートの前に交換が発生する タクトゥク 機能的であるとみなされます)。
$start_date (「出力」、「エラー」、「コネクタ」、および「ステータス」)
コマンドが開始された 1 年 1970 月 XNUMX 日からの秒数 (取得したばかりの時間)
への呼び出し後 フォーク()).
$init_date (「コネクタ」と「状態」のみ)
1 年 1970 月 XNUMX 日からの秒単位の時間。 タクトゥク その完成
初期化。
$stop_date (「コネクタ」と「ステータス」のみ)
1 年 1970 月 XNUMX 日からコマンドが終了した時刻 (秒単位)
標準出力を閉じます)。
$to (「メッセージ」のみ)
の論理番号 (またはそのような番号のセット) タクトゥク インスタンスが
メッセージが送信されました。
$type
出力ストリームの名前 (コネクタ、エラー、出力など)。
$user_scalar
パッケージに対してグローバルなスカラー。最初は undef に初期化され、ユーザーが
あらゆる目的に自由に使用できます。
最終的に、仕様は関連する行ごとに評価されます。
ストリームと結果がルート ノードに出力されます。 改行を追加する必要があることに注意してください
必要に応じて、テンプレート内で「\n」として明示的に指定します。
警告: Perl 構文が正しくない場合は、仕様に注意してください。
ひどいコンパイルエラーメッセージが表示され、 タクトゥク 実行は失敗します。
-R ストリーム=ファイル名
-- 出力リダイレクト ストリーム=ファイル名
指定されたストリーム出力を指定されたファイル (ルート ノードにある) にリダイレクトします。 知らせ
指定されたファイル名が Perl のオープン構文に準拠していること。たとえば、リダイレクトする可能性があります。
">&=X" という名前を使用して、ファイル記述子 X にコピーします。 詳細については、「-o」オプションを参照してください。
ストリーム出力。
パフォーマンスとは TUNING OPTIONS
-B パラメータ=式
--worksteal-behavior パラメータ=式
注意: この機能は実験的なものとして考慮されるべきであり、から削除される可能性があります。
今後のリリース。 設定により、ワークスチールアルゴリズムの動作を細かく調整します。
一部のパラメータを Perl 式に変換します。 これらの Perl 式では変数を使用できます。
$last_given と $available は、それぞれ与えられたタスクの数に等しい
スティーラーが最後に盗んだ時間と、残りの展開タスクの総数。
利用可能なパラメータは次のとおりです。
初期
リモートに与えられたタスクの数 タクトゥク インスタンスが初めて送信するとき
ローカルホストへのリクエストを盗みます。
成長
リモートに与えられたタスクの数 タクトゥク インスタンスを実行するたびに
初回以降はローカルホストにスチールします。
制限
「成長」の評価から得られる値の上限。
-g デュレーション
--時間粒度 デュレーション
タイムアウトチェック間の最大間隔を「duration」(秒単位)に設定します(通常は
チェックはより頻繁に行われます。メッセージを受信するたびにタイムアウト チェックが行われます)。
-n
--番号なし
無効になります タクトゥク 論理番号付けと変数「TAKTUK_COUNT」および「TAKTUK_RANK」
実行されたコマンドでは定義されていません。 これには、グローバルな要素を削除するという利点があります。
同期はデプロイメントの最後に発生し、デプロイメントをより効果的にします。
効率的。
警告: このオプションは、リモート ノード指定 (「-m」または「-f」) の前にのみ使用してください。
そうしないと、深刻な同期の問題が発生する可能性があります。 タクトゥク。 使い方 タクトゥク 点-
このオプションを使用したツーポイント通信は失敗し、 タクトゥク 警告。
-t タイムアウト
- タイムアウト タイムアウト
次のコネクタのタイムアウト (秒単位) を設定します (0 = タイムアウトなし)。 注目してください
このオプションは、コネクタ コマンド (たとえば「ssh」) のタイムアウトをオーバーライドします。 いつ
遅延が期限切れになると、コネクタ コマンドは単に強制終了されます。
-u 制限
--キャッシュ制限 制限
メモリバイト数を制限します タクトゥク 内部書き込みバッファとして使用される可能性があります。 ほとんどの人にとって
ユーザーにとって、そのような制限を設定するのは悪い考えです。まれに、次のような結果が生じる可能性があります。
行き詰まり タクトゥク (アプリケーションとアプリケーション間の書き込みの並列ブロックが原因で発生します)
タクトゥク 自体)。 このオプションを負の値に設定すると、制限が無効になります (デフォルト)。
それでも、使用する場合は、 タクトゥク I/O帯域幅のため、大きなファイルを転送する場合
システムのさまざまな部分における格差、 タクトゥク メモリ使用量が大きくなりすぎる可能性があり、
システムがスワップを開始すると、パフォーマンスが大幅に低下する可能性があります。 そのような中で
状況に応じて、内部キャッシュのサイズを制限すると、 タクトゥク メインメモリ内
そしてパフォーマンスを維持します。
-w サイズ
- 窓 サイズ
初期ウィンドウを指定されたサイズ (= パイプライン幅) に設定します。
-W スキーム
--ウィンドウ適応 スキーム
Windows アダプテーション スキームを数値に設定します (デフォルトは 0、0: アダプテーションなし、1:
実装中です)。
雑則 OPTIONS
-M
- 私の
次のオプションをローカルにします (継承されません)。 これは、次のオプションが設定されていることを意味します
ローカルホストのみに適用され、子には伝播されません タクトゥク インスタンス。 ありません
次のオプションがすでにローカルのオプションである場合に影響します。
-h
- 助けて
の短い説明を出力します タクトゥク 画面上。
-i
- 相互の作用
軍隊 タクトゥク コマンド上でいくつかのバッチ コマンドを実行した後でも対話モード
ライン。
-v
- バージョン
印刷します タクトゥク バージョン。
-P
--print-defaults
で使用されるデフォルト設定を出力します。 タクトゥク (取り込まれた環境変数
アカウント)。
INTERNAL OPTIONS
これらのオプションは、ほとんどのユーザーにとって役に立ちません。 これらは内部的に使用されます。 タクトゥク
それ自体または開発目的で。
-p パッケージ名
--印刷パッケージ パッケージ名
taktuk コードから抽出されたパッケージ「packagename」のコンテンツを出力します。
実行。
-r
--非ルート
現在 タクトゥク インスタンスはルート ノードではありません。 これは、によって使用される内部スイッチです。
生まれた タクトゥク インスタンス。 通常、これはほとんどのユーザーにとって役に立ちません。
-D スコープ=レベル
- デバッグ スコープ=レベル
「スコープ」のデバッグ レベル (1..4) を設定します。 「スコープ」とは、 タクトゥク パッケージ名または
「デフォルト」であり、レベルが低いほど、出力はより詳細になります。
コマンド
オプションの解析後、 タクトゥク 残りのいずれかでいくつかのコマンドが期待されます
コマンドライン (バッチモード) または標準入力 (対話モード) で実行します。 これらのコマンドは、
が実行するアクション タクトゥク 中にセットアップされた論理ネットワークインフラストラクチャを使用する
展開。 デフォルトでは、コマンドは;で区切られる場合があります。 または改行。 すべての人にとって、
コマンドでは、フルネームの代わりに曖昧でないプレフィックスを使用できます。 インタラクティブで
モード、 タクトゥク にインストールされている場合、「readline」(履歴、コマンドライン編集) がサポートされます。
あなたのシステム。
日時 タクトゥク コマンドは引数を受け入れます。引数は対応する区切り文字で囲む必要があります
(以下の * で示されています)。 言い換えると、* は英数字以外の任意の文字に置き換えられる可能性があります。
文字、または一致する中括弧、括弧、丸括弧のペアによって指定されます。 これらの区切り文字は次のとおりです。
コンテンツから分離する必要があります (オプション区切り文字を使用)。 引数に
終了区切り文字の前に区切り文字がある場合は、それをエスケープすることをお勧めします。
(参照してください -E オプション) を使用するか、コマンドラインで指定された場合は引数文字列全体を保護します。
Taktuk は次のコマンドを理解します。
[ セッションに 仕様 ] command
指定されたセットに属するすべてのピアにコマンドの実行を送信します。 多くのための
セット仕様の詳細については、「セットとターゲットの仕様」セクションを参照してください。
放送 command
すべてのリモートピア (ノードを除く) でコマンドの実行をブロードキャストします。
ブロードキャストを開始します)。
ダウンキャスト command
コマンドの実行を開始ノードのすべての子に分散します。
ダウンキャスト(自分自身を含まない)。
exec パラメータ * コマンドライン *
ローカルマシン上で「コマンドライン」を実行します。 実行の入力/出力は次のとおりです。
多重化されて転送される タクトゥク 根。 このコマンドはオプションのパラメータを受け入れます
タイムアウトによってトリガーされるコールバックの実行への接続を有効にします。
指示。 詳細については、「実行パラメータ」セクションを参照してください。
取得する * src * * 宛先 *
リモート ソース (リモート ノード上に存在) を、
このコマンドを実行するノード。 送信元と宛先のタイプは次とよく似ています。
「cp -r」コマンドで受け入れられるもの (ファイルまたはディレクトリ)。 このコマンドも
パラメータを使用して何らかの魔法を実行します: シェル環境変数が存在します
送信元または宛先の名前は、
リモートノードとローカルノード。 さらに、変数 $host、$rank、$position
リモート ノード ( -o オプション) を両方の名前で使用することもできます。
助けます
非常に簡潔な内容を印刷します タクトゥク 助けて。
[ ターゲット ターゲット ] * データ *
[ ターゲット ターゲット ] データ * データ *
指定されたデータを、ローカル マシン上で実行中のコマンドへの入力として送信します。
指定されたターゲットによって指定されます。 ターゲットが指定されていない場合、データはすべてのユーザーに送信されます。
コマンド。 ターゲットの詳細については、「セットとターゲットの仕様」を参照してください。
[ ターゲット ターゲット ] 閉じる
ローカルマシン上で実行中のコマンドの入力記述子を指定どおりに閉じます。
与えられたターゲットによって。 ターゲットが指定されていない場合、すべてのコマンドの入力は閉じられます。
[ ターゲット ターゲット ] file * ファイル名 *
ファイルの内容を送信します (入力ファイルを実行するノードに対してローカルである必要があります)
指定されたローカル マシン上で実行中のコマンドへの入力として指定されます。
目標。 ターゲットが指定されていない場合、データはすべてのコマンドに送信されます。
警告: このコマンドはアトミックではありません。 何らかの方法で入力ファイルを開始できた場合
XNUMX つの異なるコマンドからのコマンド タクトゥク インスタンスでは、データはおそらくインターリーブされます。 で
この場合、XNUMX つのインスタンスを同期する必要があります。 以下の場合は必要ありません。
ルートノードからのみファイルを拡散します。
[ ターゲット ターゲット ] ライン * データ *
実行中のコマンドへの入力として、追加の改行を含む指定されたデータを送信します。
指定されたターゲットによって指定されたローカル マシン。 ターゲットが指定されていない場合、データは
すべてのコマンドに送信されます。
[ ターゲット ターゲット ] パイプ * ファイル名 *
パラメーターをファイルとして扱います (入力を実行するノードに対してローカルである必要があります)
パイプ)この動作はパイプと同じです。データは継続的に到着できます。 タクトゥク 加えます
それを入力チャネルの XNUMX つとして使用し、利用可能な場合はコマンドへの入力としてデータを送信します。 もし
与えられた場合、ターゲットはデータがどのコマンドに送信されるかを指定します。それ以外の場合は、ターゲットが指定します。
すべてのコマンドに送信されます。
kill [ ターゲット ターゲット ]
指定されたシグナルをローカル コマンド プロセス グループに送信します。 信号が与えられない場合、
TERM シグナル (シグナル 15) を送信します。 指定した場合、ターゲットはどのコマンドにコマンドを実行するかを指定します。
信号が送信される場合、それ以外の場合はすべてのコマンドに送信されます。 詳細については、
ターゲットについては、「セットとターゲットの仕様」を参照してください。
メッセージ [ ターゲット ターゲット ] * データ *
メッセージ [ ターゲット ターゲット ] データ * データ *
指定されたデータをローカル マシンで実行中のコマンドにメッセージとして送信します。
指定されたターゲットによって指定されます (「 タクトゥク(3)と タクトゥクコム(3) 詳細については、
メッセージ)。 ターゲットが指定されていない場合、データは最初のコマンドに送信され、
受信しており、まだ別のメッセージの対象になっていません。 ターゲットの詳細については、
「セットとターゲットの仕様」を参照してください。
メッセージ [ ターゲット ターゲット ] file * ファイル名 *
ファイルの内容を送信します (メッセージを実行するノードに対してローカルである必要があります)
ファイル) で指定されたローカル マシン上で実行中のコマンドへのメッセージとして送信されます。
指定されたターゲット (を参照) タクトゥク(3)と タクトゥクコム(3) メッセージの詳細)。 いいえの場合
ターゲットが指定されている場合、データは受信を実行する最初のコマンドに送信されます。
すでに別のメッセージのターゲットになっています。
警告: このコマンドはアトミックではありません。 何らかの方法でメッセージ ファイルを開始できた場合
XNUMX つの異なるコマンドからのコマンド タクトゥク インスタンスでは、データはおそらくインターリーブされます。 で
この場合、XNUMX つのインスタンスを同期する必要があります。 以下の場合は必要ありません。
ルートノードからのみファイルを拡散します。
メッセージ [ ターゲット ターゲット ] ライン * データ *
追加の改行を含む指定されたデータをメッセージとして実行中のコマンドに送信します。
指定されたターゲットで指定されたローカル マシン上 (「 タクトゥク(3)と タクトゥクコム(3)
メッセージの詳細については、こちらをご覧ください)。 ターゲットが指定されていない場合、データは最初のターゲットに送信されます。
コマンドが受信を実行していて、まだ別のメッセージの対象になっていない。
メッセージ [ ターゲット ターゲット ] パイプ * データ *
パラメーターをファイル名として扱います (入力を実行するノードに対してローカルである必要があります)
パイプ)この動作はパイプと同じです。データは継続的に到着できます。 タクトゥク 加えます
それを入力チャネルの XNUMX つとして使用し、利用可能な場合はデータをメッセージとしてコマンドに送信します
(参照してください タクトゥク(3)と タクトゥクコム(3) メッセージの詳細)。 与えられた場合、
target は、データがどのコマンドに送信されるかを指定します。それ以外の場合は、データは
受信を実行する最初のコマンドですが、まだ別のメッセージの対象になっていません。
ネットワーク
ネットワーク 状態
現在の値を出力します タクトゥク デプロイメントツリー。 括弧内の数字はピアランクと一致します
論理的には タクトゥク 番号付けとピアの準備完了状態。 デプロイメントが行われていない場合は、
完了すると、印刷されたツリーには「接続中...」の葉が表示されます。
ネットワーク キャンセル
進行中のすべての接続をキャンセルします。 その結果、これにより、
可能な番号付け タクトゥク インスタンスと実行 タクトゥク コマンド。
ネットワーク 番号を付け直す
の論理番号付けを完全に再計算します。 タクトゥク インスタンス。 これは特に
最初の番号付け後に展開されたネットワークに新しいノードを追加する場合に便利です。
ネットワーク update
の論理番号付けを更新します。 タクトゥク 既存のインスタンスを変更せずに
数字。 常に成功するとは限りません タクトゥク 番号付けには深さ優先スキームを使用します。
ツリーの各ノードのストリーム「状態」でイベント 9 を送信します。
維持しながら更新 タクトゥク 番号付けスキーム。 これは、追加する場合に特に便利です
最初の番号付けの後、展開されたネットワークに新しいノードが追加されます。
オプション 名前 * 値 *
オプション * ライン *
名前が指定されている単一のオプションを変更するか (最初の形式)、
このコマンドを実行するノード上の追加のオプション行 (XNUMX 番目の形式)。 見る
タクトゥク 詳細については、オプションを参照してください。最初の形式では、名前は短くても長くてもかまいません。
警告: 新しいノードが追加されました タクトゥク このコマンドを使用するネットワークには番号が付けられません。
取得するには、ネットワークの再番号付けまたは更新をさらに使用する必要があります。 タクトゥク 論理的な
ナンバリング。
置きます * src * * 宛先 *
ローカル ソース (このコマンドを実行するノード上に存在する) をコピー先にコピーします。
コマンドのプレフィックスとして指定されたすべてのリモート ノード。 ソースの種類と
宛先は、「cp -r」コマンドで受け入れられる宛先 (つまり、ファイルまたは
ディレクトリ)。 このコマンドは、パラメータを使用してある種の魔法も実行します。
ソース名または宛先名に存在する環境変数は、それらの名前に置き換えられます。
ローカルノードとリモートノードのそれぞれの値。 さらに、変数 $host、
ローカルノードの $rank と $position (これらは、 -o オプション)も可能です
両方の名前で使用されます。
同期する command
指定されたコマンドに、デプロイメント、ノード番号付け、およびノードの番号付けが完了するまで強制的に待機させます。
実行する前に以前のコマンドを実行します。 これは、次のようなグローバル コマンドに役立ちます。
ノードの番号付けを待たない「ブロードキャスト」。 逆に、マルチキャスト コマンド
(セット仕様をプレフィックスとして使用するもの) ノードに番号が付けられ、
前のコマンドの完了。 疑わしい場合は、必ず「同期」を実行する前に使用してください。
「ブロードキャスト」、「ダウンキャスト」、または「待機短縮」。
taktuk_perl * 引数 *
コマンド「exec perl」と同じように、ローカル ノード上で Perl インタープリタをフォークします。
引数" が使用されています。違いは、このインタプリタが以前は
ポイントツーポイント通信ルーチンを含む「taktuk」パッケージで取得
(「TakTuk::send」および「TakTuk::recv」、参照 タクトゥクコム(3))。 警告:
このコマンドの引数を分析するパーサーの制限があるため、次のことを行う必要があります。
Perl にオプションを与える場合は (空の場合でも) 引数を指定し、「--」を使用します。
インタプリタ (オプションのみを指定した場合でも)。
バージョン
プリント タクトゥク バージョン。
やめます
終了します タクトゥク エンジンを停止し、確立された論理通信ネットワークをシャットダウンします。
導入中。
wait ターゲット ターゲット
ローカルで待機(以降のコマンドの実行を一時停止)します。 タクトゥク のインスタンス
指定されたターゲットに応じたローカルプロセスの完了。 このターゲットは、
「出力」を除く任意のターゲット仕様を指定できます。 ターゲットの詳細については、「SET」を参照してください。
およびターゲットの仕様」。
wait 減らします ターゲット ターゲット
ルートノードでのみ使用できます。 待機します(次の実行を一時停止します)
コマンド) を使用して、デプロイされたすべてのプロセスの一部のプロセスを完了します。 タクトゥク インスタンス
与えられたターゲットに応じて。 このターゲットは、以下を除く任意のターゲット仕様にすることができます。
"出力"。 単純な「wait」コマンドとは異なり、このコマンドは
「ブロードキャスト」と同じ方法で同期されます。 したがって、明示的に同期する必要があります
ブロードキャストされていないコマンドが混合されている場合 (そうでない場合は、それらの前に実行されます)。
エグゼク パラメーター
当学校区の タクトゥク コマンド「exec」はオプションのパラメータを受け入れます。 これらのパラメータは次の目的で使用されます。
コマンドのターゲット ID を指定するか、タイムアウトによってトリガーされるアクションをアタッチします。
コマンドの実行。 「exec」コマンドは、任意の数のパラメータを受け入れます。 これらのパラメータ
次の構文を使用して左から右に解釈されます。
ターゲット 値
実行したコマンドのターゲットIDとして(数値)値を付加します。 このターゲットID
ターゲットを利用する後続のコマンドによって使用されます (「input」、
「メッセージ」、「キル」、または「待機」)。
注意: この値は、自動的に設定されたターゲット ID を上書きします。
タクトゥクによって割り当てられました。 したがって、明示的に を混合して使用することはお勧めできません。
自動的に割り当てられたターゲット ID を使用して割り当てられたターゲット ID。
タイムアウト 値
新しいタイムアウト仕様を作成します。 指定された期間の終了時に、
値を指定すると、添付されたコールバックがトリガーされます。 コールバックが接続されていない場合は、
TERM シグナルをコマンドに送信します。 コマンドの実行が途中で終了した場合
タイムアウト時間が経過すると、タイムアウトはキャンセルされます。
kill 値
最後に定義されたタイムアウトにコールバックを接続します。 このコールバックはシグナルを送信します。
number は、タイムアウトしたコマンドに指定された値です。
アクション command
最後に定義されたタイムアウトにコールバックを接続します。 このコールバックは、指定されたメソッドを実行します。 タクトゥク
指示。 他のコマンドを実行する場合は、環境変数を使用できます。
タイムアウトしたコマンドの PID を含む「TAKTUK_PID」。 与えられた タクトゥク command
任意の有効なものにすることができます タクトゥク コマンド (コマンド区切り文字なし)。
各タイムアウトには任意の数のコールバックをアタッチできることに注意してください。 処理されます
パラメータとして指定された順序で。
ENVIRONMENT
変数 それ 変化する タクトゥク デフォルト 行動
いくつかの タクトゥク 環境を使用している一部のホストではデフォルト設定を変更できます
変数。 これらの設定は、他のオプションと同様に反映されます。 それらは次によってオーバーライドされます。
伝播された設定とコマンド ライン オプション。
デフォルト設定を変更するには、変数を使用します TAKTUK_NAME コラボレー NAME の名前です
対応する長いオプションを大文字にし、ダッシュをアンダースコアに置き換えます。 のために
複雑な値を取るオプション (「--debug」など) は、アンダースコアとフィールドを追加するだけです
名前の末尾を大文字に変更したいとします。 「タクトゥク」を使う
--print-defaults」には、デフォルト設定を変更するために使用される名前の例が表示されます。
環境内で使用されないデフォルト設定を定義することに注意してください。 タクトゥク ありません
効果。
一部変更することもできます タクトゥク デフォルト設定をローカルに伝播せずに
デプロイメントツリーの変更。 これを行うには、変数を使用します TAKTUK_MY_NAME どこの名前
は上記のように定義されます。 以前と同様、これらのローカル設定は伝播されたものによって上書きされます。
設定とコマンドラインオプション。
変数 セッションに by タクトゥク in リモートから 実行された コマンド
Taktuk は、実行するすべてのコマンドに対して次の環境変数を設定します。
TAKTUK_CONTROL_READ、TAKTUK_CONTROL_WRITE
ファイル記述子。内部で使用されます。 タクトゥク.
TAKTUK_COUNT
正常にデプロイされた合計数 タクトゥク インスタンス
TAKTUK_HOSTNAME
に指定されたローカル ノードのホスト名 タクトゥク (コマンドライン上)
TAKTUK_PIDS
ローカルで実行されたコマンドの PID のリスト (スペースで区切られています) タクトゥク
インスタンス。
TAKTUK_TARGET
現在実行中のプロセスのターゲット番号 (「SET AND TARGETS」を参照)
詳細については「仕様」を参照してください)。
TAKTUK_POSITION
コマンドライン上のホストの位置。
TAKTUK_RANK
ローカル インスタンスの論理ランク。
TAKTUK_FATHER
これを生成した taktuk インスタンスの論理ランク。
TAKTUK_CHILD_MIN
現在のタクトゥクの最も小さい番号の子孫の論理ランク
インスタンス (ローカルの TakTuk インスタンスに子がない場合は -1)。
TAKTUK_CHILD_MAX
現在のタクトゥクの最も大きい番号の子孫の論理ランク
インスタンス (ローカルの TakTuk インスタンスに子がない場合は -1)。
ホスト名 仕様
に与えられたホスト名 タクトゥク 単純なマシン名または複雑なホストリストの場合があります
仕様。 一般的な形式では、ホスト名はホストセットとオプションで構成されます
スラッシュで区切られた除外セット。 これらの各セットは、ホストのコンマ区切りリストです。
テンプレート。 これらのテンプレートはそれぞれ定数部分 (括弧の外側の文字) で構成されています。
およびオプションの範囲パーツ(角かっこ内の文字)。 各範囲部分はコンマです
間隔または単一値の個別のリスト。 各間隔はXNUMXつの単一の値で構成されます
ダッシュで区切ってください。 これは、に指定されたすべてのホスト名に当てはまります。 タクトゥク (両方とも -m or -f
オプション)。
つまり、次の式は有効なホスト仕様です。
node1
ノード[19]
ノード[1-3]
node [1-3]、otherhost / node2
node[1-3,5]part[a-b]/node[3-5]parta,node1partb
それらはそれぞれ次のように拡張されます。
node1
node19
ノード1 ノード2 ノード3
node1 node3 他のホスト
ノード1パート ノード2パート ノード2パートb ノード3パートb ノード5パートb
これらの値のリストは正規表現ではないことに注意してください(「node [19]」は「node19」であり、
「node1、node2、....、node9」ではありません)。 間隔は、perlの魔法の自動を使用して実装されます
インクリメント機能。したがって、英数字値を間隔の境界として使用できます(perlを参照)。
ドキュメント、この自動インクリメントの制限については演算子++)。
セット そして ターゲット 仕様
当学校区の タクトゥク コマンドラインと「TakTuk::send」ルーチンは、セットの仕様を次のように受け入れます。
宛先ホスト。 セット仕様は、次のように区切られた間隔仕様で構成されます。
スラッシュ。 間隔の指定は、XNUMX つの数値または XNUMX つの数値で構成されます。
ダッシュまたは単一の数字で区切られ、その後にプラス記号が続きます (この最後のケースは、
番号から最大の番号までの間隔 タクトゥク 行き先)。 もちろん
間隔を指定する XNUMX つの数値は昇順で指定する必要があります。
セット仕様に含まれるリモートピアは、すべて論理番号が指定されているピアです。
セットの少なくとも XNUMX つの区間に属します。 セット仕様の例をいくつか示します。
1
ピア番号は 1
2-7
ピアの番号は 2,3,4,5,6、7、XNUMX、XNUMX、XNUMX、XNUMX です。
2-4/1/10
ピアの番号は 1,2,3,4、10、XNUMX、XNUMX、XNUMX です。
3+
3 から最大の番号までのピア
5 + / 1
5 から最も大きい番号のピアとピア 1
ターゲット番号は、によって割り当てられた番号です。 タクトゥク 実行するすべてのプロセスに
(正常に開始されたか、「exec」または「taktuk_perl」コマンドを使用していない)。 デフォルトでは、これは
数値は 0 から始まり、実行されたプロセスの合計数になります。
TakTuk の発売以来マイナス XNUMX です。 「TakTuk::send」または タクトゥク command
集合の場合と同じ構文で表現できます。
また、 タクトゥク いくつかの特別なターゲットを理解しています。 特別対象「すべて」対象
すべてのプロセス: これは、コマンドが実行中のすべてのローカル プロセスに適用されることを意味します。
(メッセージまたは入力データは複製され、すべてに送信されます)、これがデフォルトです。
「input」コマンドと「kill」コマンド。 特別なターゲット「any」は、最初の対象者をターゲットとします。
プロセス。 メッセージの場合、これは「TakTuk::recv」を発行する最初のプロセスです。
それはまだ別のメッセージのターゲットになっていません。これが、
「メッセージ」コマンド。 最後に、特別なターゲット「output」は出力ストリームをターゲットとします。
プロセスではなく「メッセージ」。
例
次の例は、の基本的な使用法を示しています。 タクトゥク いくつかのマシンとの使用
開発者向けオプション。 注目してください タクトゥク よりもはるかに多くのピアに拡張できるように設計されています。
これらの例に含まれる数。
Basic 使用
シンプルな 展開
最も簡単な使用方法 タクトゥク オプション「-s」を使用して自己伝播させることです。 この中で
この場合、ホスト「toto.nowhere.com」上の「hostname」の基本的なリモート実行は可能です。
書かれた:
taktuk -s -m toto.nowhere.com ブロードキャスト exec [ホスト名]
この例では、「-s」は尋ねます タクトゥク 独自のコードをリモート ホストに伝播します。 かもね
「toto.nowhere.com」に「taktuk」実行可能ファイルをインストールすることで削除されます。 以下により
と仮定します タクトゥク すべてのリモート ホストにインストールされます。
「-m toto.nowhere.com」は、アクセス先のリモート ホストのセットを記述します。 タクトゥク
「broadcast exec [ hostname ]」は、 タクトゥク
通訳。
この例は、他のさまざまな方法で書くことができます。 インタラクティブモードでも同じです
実行は次のようになります。
taktuk -m toto.nowhere.com
こちら タクトゥク 標準入力からのコマンドの待機中にブロックされます。 したがって、次のように入力するだけです。
ブロードキャスト実行 { ホスト名 }
Ctrl+D
ここで、「exec」へのパラメータに注目してください。 タクトゥク コマンド (すべてのコマンドと同様)
パラメータ) は、適切な区切り文字のペアで囲むことができます。 私たちも書くかも知れません
ファイル「machine」内のコマンドに関与するホストのリスト。以下が含まれます。
toto.nowhere.com
と タクトゥク コマンドは次のようになります。
taktuk -f マシン ブロードキャスト exec - ホスト名 -
以下を含む別のファイル「options」を使用することもできます。
-f マシン
に与えられたオプション行としてそれを使用します タクトゥク:
taktuk -F オプション ブロードキャスト exec \( ホスト名 \)
最後に、以下を含む最後のファイル「command_line」にすべてを保存できます。
-f マシンブロードキャスト実行 = ホスト名 =
次のコマンドでも同じ結果が得られます。
taktuk -F コマンドライン
これらの亜種はすべて同じ効果を持ちます。つまり、「hostname」を実行します。
"toto.nowhere.com" とプログラムの出力がローカルホストに転送されます。 で
この場合:
toto.nowhere.com: ホスト名: somepid: 出力 > toto.nowhere.com
パラメータ ブレース
コマンドパラメータの中括弧はその内容から分離する必要があることに注意してください。 したがって、
単一の閉じ中括弧が含まれていない限り、他の中括弧を含めることができます。
コンテンツ:
taktuk -m localhost Broadcasting exec [ 'if [ $RANDOM -gt 10000 ];then より大きくエコーする;else より小さくエコーする;fi' ]
この例では、シェルが「$」を解釈しないようにするために引用符が必要です。
そして ";" 文字と "if" の右中括弧が次のようにみなされるのを防ぐため
「exec」コマンドを閉じます。 この場合、変数は次の場合にのみ補間されます。
リモートホスト。 これと同じ例は、ショートカットとインタラクティブを使用して表現することもできます。
モード:
taktuk -m ローカルホスト -E%
次に、次のように入力します。
be [ if [ $RANDOM -gt 10000 %];then より大きくエコー;else より小さくエコー;fi ]
Ctrl+D
テストで使用されている閉じ括弧は、次のように解釈されるべきではないことに注意してください。
「exec」引数の右括弧。 このような場合、より簡単な解決策はおそらく次のとおりです
別の種類の中括弧を使用する
taktuk -m ローカルホスト
その後:
be { if [ $RANDOM -gt 10000 ];then 大きくエコー;else 小さくエコー;fi }
Ctrl+D
通常、安全を確保したい場合は、すべてのコマンド パラメータを引用符で囲むことができます。 それにもかかわらず、
対話モードでは入力行が引用符で囲まれないため、パラメータを引用符で囲むべきではないことに注意してください。
シェルによって解釈されます。
exec パラメータ
によって実行されるコマンド タクトゥク 「exec」パラメータを使用してタイムアウトできます。 たとえば、
何らかのコマンドを実行して、XNUMX 秒後に TERM シグナルを送信したいとします。
タイプ:
taktuk -m localhost ブロードキャスト実行タイムアウト 2 [スリープ 10]
タイムアウトが発生したときに実行されるコールバックは、TERM 以外のものにすることもできます。
信号。 これは別のシグナル (たとえば KILL) である可能性があります。
taktuk -m localhost ブロードキャスト exec タイムアウト 2 kill 9 [ sleep 10 ]
または有効な タクトゥク コマンド:
taktuk -m localhost ブロードキャスト exec タイムアウト 2 アクション ブロードキャスト exec [ echo hello ] [ sleep 10 ]
または、いくつかのタイムアウトといくつかのコールバックさえあります。
taktuk -m localhost bet 2 ae [ echo hello ] k 30 t 10 k 9 [ sleep 5 ]
この最後の例では、コマンド「sleep 5」が次のように実行されます。 タクトゥク。 2秒後、
最初のタイムアウトがトリガーされ、コマンド「echo hello」が実行され、送信されます。
最初のコマンドに対する USR1 シグナル (「sleep 5」)。 10 番目のタイムアウトは XNUMX に設定されます
秒。 したがって、「sleep 5」コマンドはその前に終了するため、この問題は発生しません。
その有効期限。
トポロジー
通常、 タクトゥク デフォルトのウィンドウであるため、比較的平坦なツリーを使用して自身をデプロイします。
サイズが非常に大きい (同時進行中の接続が 10 個)。 小さいウィンドウを使用する
サイズは、ローカルの負荷にも依存しますが、より深いツリーになります。
デプロイメントノード。 使用できます タクトゥク ツリーを出力する「network state」コマンド
によって構築された タクトゥク.
通常、大きすぎるウィンドウを使用するのは悪い考えです。
ローカル負荷が多く、作業の分散が不十分です (多くの場合、10 程度で十分です)。
強制することもできます タクトゥク より具体的なトポロジを使用します。 たとえば、実行するには
「echo $$」はフラットツリーをデプロイメントトポロジとして使用し、ワークスチールを無効にするだけです
タクトゥク:
taktuk -d -1 -m host1 -m host2 -m host3 ブロードキャスト exec [ 'echo $$' ]
チェーンのようなトポロジを使用するには、引数構造でトポロジをエンコードします。
taktuk -m host1 -[ -m host2 -[ -m host3 -] -] ブロードキャスト実行 [ 'echo $$' ]
または、動的ツリーのアリティを 1 に制限します。
taktuk -d 1 -m host1 -m host2 -m host3 ブロードキャスト exec [ 'echo $$' ]
最後に、デフォルトでは動的に構築されたトポロジが使用されます。
taktuk -d 0 -m host1 -m host2 -m host3 ブロードキャスト exec [ 'echo $$' ]
軽量 グリッド 展開
軽量グリッドでは、局所性の問題 (LDAP キャッシュ、ネットワーク トポロジなど) により
各サブクラスターのデプロイメントを分離するのは興味深いようです。 これを行うには、
各クラスターのノードを別個のデプロイメント グループに含めることが可能です。
taktuk -b -m ノード1.cluster1 -m ノード2.クラスタ1 -m ノード3.クラスタ1 -m ノード4.クラスタ1 -e -b -m ノード1.クラスタ2 -m ノード2.クラスタ2 -m ノード3.クラスタ2 -m ノード4.クラスタ2 -e ブロードキャスト実行 [ホスト名]
このコマンドには、デプロイメント効果があります。 タクトゥク 1 つのクラスター (クラスター 2 とクラスター XNUMX) 上で作成
1 つのノード (ノード 4 ~ XNUMX) で構成されるため、XNUMX つのクラスターからデプロイされたノードが他の目的で使用されるのを防ぎます。
他のクラスターからノードをデプロイします。 最後に、展開が完了すると、
これらすべてのノードでコマンド「hostname」を実行します。
実行 a 明確な command on 各 host
それぞれの異なるホストには、引数を使用して独自のコマンドを与えることができます。
./taktuk -m host1 -[ exec [ hostname ] -] -m host2 -[ exec [ id ] -] -m host3 -[ exec [ 'echo $TAKTUK_RANK; ls' ] -] 終了
ただし、これはセット仕様を使用して指定することもできます (この場合、論理番号は
ホストに使用されます):
./taktuk -m host1 -m host3 -m host8 1 exec [ hostname ]、2 exec [ id ]、3 exec [ 'echo $TAKTUK_RANK; ls']
または対話モードの場合:
./taktuk -m ホスト 1 -m ホスト 3 -m ホスト 8
1 実行 [ホスト名]
2 実行 [ id ]
3 exec [ echo $TAKTUK_RANK; ]
Ctrl+D
ただし、一般に、これらの論理番号は一致しないことに注意してください。
コマンドライン上のホストの位置。
スクリプト
次のことを認識しながら、「essai.pl」という名前の Perl スクリプトを XNUMX つのホストに配布して実行します。
「taktuk」と「essai.pl」はルートノードにのみ存在します。これは次のように簡単です。
タクトゥク:
taktuk -s -m ホスト 1 -m ホスト 2 -m ホスト 3
ブロードキャスト実行 [perl -- - ]
ブロードキャスト入力ファイル [ essai.pl ]
ブロードキャスト入力を閉じる
Ctrl+D
ファイル コレクション
バージョン 3.4 以降、ファイル転送は TakTuk によって直接サポートされています。 これに注意してください
転送は、 タクトゥク ネットワーク (通常は、ssh 接続で構成されるツリー)
デフォルト)。 このネットワークは、大きなファイルの転送には効率的ではありません (両方とも
トポロジー的にもプロトコルの観点からも)、これを使用するときはこのことに留意してください。
特徴。
「message.txt」という名前のファイルを「/ tmpにしたがって、各リモートホストのディレクトリは
次のように簡単です。
taktuk -s -m ホスト 1 -m ホスト 2 -m ホスト 3
ブロードキャストを置く [ message.txt ] [ / tmpに ]
Ctrl+D
ただし、古い方法も引き続き機能します (前のコマンドとほぼ同じ動作をします)。
taktuk -s -m ホスト 1 -m ホスト 2 -m ホスト 3
ブロードキャスト実行 [ cat - >/tmp/message.txt ]
ブロードキャスト入力ファイル [ message.txt ]
ブロードキャスト入力を閉じる
Ctrl+D
ただし、入力するときはシェルの解釈に注意する必要があります。
すべてをコマンドラインで直接実行します。
taktuk -s -m host1 -m host2 -m host3 ブロードキャスト実行 [ 'cat - >/tmp/message.txt' ]\;ブロードキャスト入力ファイル [ message.txt ]
この後者のコマンドでは、「input close」が必要ないことに注意してください。 タクトゥク 閉じ
終了時に生成されたすべてのコマンドの入力。
「get」コマンドを使用すると、以前は非常に困難であったことも可能になります。
タクトゥク、ファイルを収集しています。 次のコマンドは、ファイル「/tmp/message.txt」を取得します。
各リモート ホストを作成し、それをローカルの「message-number.txt」にコピーします。ここで、「number」は
ソースノードの論理ランク:
taktuk -s -m ホスト 1 -m ホスト 2 -m ホスト 3
ブロードキャスト get [ /tmp/message.txt ] [ message-$rank.txt ]
Ctrl+D
最後に、「put/get」コマンドはディレクトリをコピーできることに言及することが重要です。
ファイルのアクセス許可を変更しないでください。
コミュニケーション
タクトゥク ポイントツーポイント通信を確立するためにも使用できます。 ファイルを仮定します
「communication.pl」には、次の Perl スクリプトが含まれています。
私の $rank = TakTuk::get('rank');
私の $count = TakTuk::get('count');
if ($rank == 1)
{
print "私はプロセス 1\n";
if ($count > 1)
{
TakTuk::send(to=>2, body=>"Hello world");
}
}
elsif ($rank == 2)
{
print "私はプロセス 2\n";
my ($from, $message) = TakTuk::recv();
print "$to が $from から $message を受信しました\n";
}
次に、次のコマンドを実行します。
taktuk -m localhost -m localhost ブロードキャスト taktuk_perl [ - ]\;ブロードキャスト入力ファイル [ communication.pl ]
次のような出力が生成されます。
Astaroth.local: taktuk_perl: 3523: 出力 > 私はプロセス 2
Astaroth.local: taktuk_perl: 3523: 出力 > プロセス 2 が 1 から Hello world を受信しました
Astaroth.local: taktuk_perl: 3523: ステータス > 0
Astaroth.local: taktuk_perl: 3524: 出力 > 私はプロセス 1
Astaroth.local: taktuk_perl: 3524: ステータス > 0
ファイル「communication.pl」がユーザーのログイン ディレクトリに配置されている場合、これは
より単純な方法でも実行できます。
taktuk -m localhost -m localhost ブロードキャスト taktuk_perl [ communication.pl ]
出力 テンプレート リダイレクト
タクトゥク コマンドステータスなしで各サイトにそのランクをエコーさせることもできます
情報:
taktuk -o status -m host1 -m host2 ブロードキャスト exec [ 'echo $TAKTUK_RANK' ]
または、コマンドの出力の各行の前にあるプロンプトを削除します。
taktuk -o Output='"$line\n"' -m host1 -m host2 ブロードキャスト実行 [ 'echo $TAKTUK_RANK' ]
または、プロンプトを変更してストリーム タイプのみを表示するようにすることもできます。
taktuk -o default='"$type > $line\n"' -m host1 -m host2 ブロードキャスト exec [ 'echo $TAKTUK_RANK' ]
また、2 番目のファイル記述子 XNUMX にのみステータスをリダイレクトすることもできます。
ホスト:
taktuk -m host1 -R status=2 -m host2 ブロードキャスト exec [ 'echo $TAKTUK_RANK' ]
など...
Developer 使用
デバッギング タクトゥク
デバッグ中 タクトゥク の「デバッグ」、「警告」、「エラー」機能を使用して作成されます。
パッケージ「診断」。 これらのルーチンは、パッケージのデバッグ レベルに応じて異なります。
それらが呼び出されると、ルート ノードまで伝播される出力が生成され、
画面に印刷されます。
デフォルトでは、パッケージのデバッグ レベルは 2 に設定されています (すべてが出力されます)
「デバッグ」メッセージを除く)。 これは、次のコマンドを使用してパッケージごとに変更される可能性があります。 -D オプションを選択します。
たとえば、次のコードは「toto.nowhere.com」で「true」を実行し、出力します。
内部メッセージのあらゆる部分:
taktuk -D デフォルト = 1 -m toto.nowhere.com ブロードキャスト実行 [ true ]
しかし、同じコマンドを実行して、からのメッセージのみを保持することもできます。
「スケジューラー」パッケージ:
taktuk -D スケジューラ=1 -m toto.nowhere.com ブロードキャスト実行 [ true ]
または、実行時に警告やエラー メッセージが表示されないようにします。
taktuk -D デフォルト = 4 -m toto.nowhere.com ブロードキャスト実行 [ true ]
内部 メッセージ
で使用される内部メッセージ サーバー タクトゥク ロジカルネットワークの管理用
構築、コマンド実行、および I/O 転送は、 -r
オプション:
taktuk-r
このモードでは、 タクトゥク 非常に不可解に見えるかもしれません。 これではありません
一般ユーザーを対象としています。
onworks.net サービスを使用してオンラインで taktuk を使用する
