HULFTのutlsendコマンドを使いこなすには?同期と非同期が使いこなすカギ!

2019年3月30日

以前HULFTのコマンド類について以下の記事にまとめましたが、やはりもっと個別のコマンドについて知りたいという要望も多いようなので、

今回はHULFTの配信要求コマンドであるutlsendコマンドについて取り上げて説明しようと思います。

HULFTのコマンドについてざっくり知りたい方は以下の記事を参照ください。

[clink url=”https://itengneer-navi.com/hulft-linux-command/”]

HULFTのutlsendコマンドとは?

HULFTのutlsendコマンドとは自ホストのHULFTデーモンに対して配信要求を行うコマンドになります。

使い方は以下のようになっており、utlsend -fの後ろにファイルIDを指定する事によって自ホストの指定されたファイルIDの転送を開始する事ができます。

HULFT配信要求コマンドの使い方
utlsend -f fileID [-p priority] [-sync [-w time]]

【コマンド説明】
HULFTの自サーバから相手サーバへ配信を行いたい時に利用する配信コマンド。
他にもオプションはあるのですが、よく使うオプションのみ紹介しておきます。

【オプション】
-p priority:配信要求の優先度を指定する場合に-pの後ろに時間を入れて指定すると優先度を強制します。指定しないと定義の値となります。

-sync:同期転送を実施する場合に指定します。本オプションを指定しないと非同期転送となるのでコマンド発行完了で終了となります。シェルやバッチ処理で利用する際に指定しておくと返り値として配信結果をエラーコードとして取得できるので便利です。

-w time:-syncを指定した場合に同期転送時間として転送する時間を指定

ここで気を付けたいのがオプションの指定。

-pオプションと-syncオプションがあるのですが、特に-syncオプションの指定についてはコマンドの動きが変わる為、しっかりとした理解が必要になります。

詳しくは以下で説明したいと思います。

utlsendの-syncオプションを指定した際の動作の違い

utlsendコマンドを利用する上で気を付けたいのが-syncオプションを指定する場合と指定しない場合の動作に違いがある事。

-syncオプションは一般に同期転送と呼ばれる転送方法を指定する場合に使うオプションで、

指定する事によってHULFT転送が完了するまでコマンドが終了しない動きになります。

逆に-syncオプションを指定しない場合はutlsendコマンドを発行できた時点でコマンドが完了します。

いわゆる非同期転送と呼ばれる動きです。

この動作から言える事は-syncオプションを指定した際のコマンドの返り値と-syncオプションを指定しない際のコマンドの返り値では意味合いが違う事を意味しています。

イメージで言うと以下のイメージです。

-syncオプションを指定する場合
以下図のように同期転送と呼ばれる処理になります。


-syncオプションを指定しない場合
以下図のように非同期転送と呼ばれる処理になります。データ転送の結果を確認するには別途確認が必要になります。


utlsendコマンド正常終了時の戻り値は?

上述した図で示しているように-syncオプションを指定する事によってデータ転送が完了した結果が返ってくるのに対して、-syncオプション指定をしない場合には配信要求が実行完了した時点でコマンドに結果を返してしまいます。

どちらも正常終了時の返り値は0を返すという動きは変わりませんが、

-syncオプションを指定した時にはデータ転送が正常終了した時に戻り値0

-syncオプションを指定しない時にはutlsendコマンドが実行された時点で戻り値0

それぞれ返す動作となります。

-syncオプションを指定した際のタイムアウト時間は?

-syncオプションを指定した場合、データ転送の結果を返すまでの時間についてはシステム動作環境設定の中にあるユーティリティ応答待ち時間に依存します。

このユーティリティ応答待ち時間はデフォルト60秒を指定されていますが、配信開始から指定した時間が過ぎた際には例えデータ転送中であっても強制的に結果を返す事になります。

強制的に結果を返すというのはデータ転送中でも関係なく返り値として0を返答する事になる為、ユーティリティ応答待ち時間あたりに返答があったコマンドについては結果が0であってもデータ転送が完了したと一概に思わないようにしましょう。

データ転送の結果はutllistコマンドもしくはログを参照する事で確実に確認する事ができるのであわせて参照するようにしていきましょう。

-wオプションを指定した場合は指定した時間で強制的に結果を返す

-syncオプションを指定した際に-wオプションをあわせて指定する事によって、上述したユーティリティ応答待ち時間とは別に返答結果取得までの待ち時間を指定する事ができます。

よって大容量データの場合は-wオプションを指定した上でHULFT配信を実施すると良いです。

相手先ホストに通信が届いていない場合はソケット通信応答待ち時間に依存するので注意

utlsendコマンドで配信する際に気を付けたいのが、そもそも相手先ホストに通信が届かない場合

この場合、配信処理が始まる前のソケット通信で応答待ちをする事になるため、上述したユーティリティ応答待ち時間とは別の設定に依存してタイムアウトを待つ事になります。

その設定というのはシステム動作環境設定にあるソケット通信応答待ち時間

ソケット通信応答待ち時間はそもそも相手先ホストに通信が届かない場合に応答を待つという設定値なのですが、デフォルト設定が3600秒と実に1時間も待つ仕様になっています。

よってこの値については設計時にしっかりと見直しをかけ、値を変更しておく事をおすすめします。

そもそも1時間も通信が途絶えている場合、何らかの障害が起きている可能性が高い為、5分程度でも長いぐらいです。

環境にあわせて変更するように意識しておきましょうね。

まとめ

HULFT配信コマンドutlsendについてまとめてみました。
次回はHULFT集信コマンドであるutlrecvについてまとめてみようと思います。

長文になりましたがutlsendコマンドは配信要求を行う上では必須で、非常に便利な為、ぜひ使ってみてください。

[clink url=”https://itengneer-navi.com/hulft-utlrecv-soushinyoukyuutoha/”]

スポンサーリンク