HULFTのutlrecvコマンドを使いこなすには?同期非同期に加えて送信要求の動きが重要!

HULFTのutlsendコマンドについて説明した記事が思ったよりも好評だったため、

今回はutlrecvコマンドについての説明を書いてみようと思います。

前回のutlsendの記事はutlrecvコマンドにも共通して当てはまる動作がありますので、未読の方は一度読んでみてください

[clink url=”https://itengneer-navi.com/hulft-utlsend-sync-w-toha/
“]

HULFTのutlrecvコマンドとは?

HULFTのutlrecvコマンドは相手ホストのHULFTに対して送信要求を行うコマンドになります。

自ホストを起点としたファイル集信を行う為のコマンド

とも言えます。

使い方は以下のようになっており、utlsendと同じく-fの後ろにファイルIDを指定する事によって相手ホストに対して指定したファイルIDの転送を開始する要求を開始する事ができます。

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

【コマンド説明】
HULFTの相手サーバへ自サーバに対する送信要求を行う際に利用するコマンド。

主なオプションは以下に説明します。

【オプション】
-p priority:集信処理の優先度を指定する場合に-pの後ろに時間を入れて指定すると優先度を強制します。指定しないと定義の値となります。
-sync:同期転送を実施する場合に指定します。本オプションを指定しないと非同期転送となるのでコマンド発行完了で終了となります。シェルやバッチ処理で利用する際に指定しておくと返り値として配信結果をエラーコードとして取得できるので便利です。
-w time:-syncを指定した場合に同期転送時間として転送する時間を指定します。

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

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

-syncオプションは一般に同期転送と呼ばれる転送方法を指定する場合に使うオプションで、utlsendコマンドと同一の意味を持ちます。

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

逆に-syncオプションを指定しない場合はutlrecvコマンドを発行し、送信要求が通った時点でコマンドが完了します。

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

この動作の中でutlsendと違うのは、自ホスト内で配信要求が通った時点でコマンド完了するutlsendと違い、

utlrecvの場合は相手ホストに対して送信要求が通らないといけないという点です。

この動作は-syncオプションをつけている時でもつけていない時でも配信要求のタイミングでエラーとなった場合にはどちらもエラーを返すという事に繋がります。

送信要求コマンドをイメージで言うと以下のイメージになりますが、どちらも配信要求結果返答を受ける所までは共通でコマンド実行がなされます。

-syncオプションを指定する場合

-syncオプションを指定しない場合

 

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

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

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

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

-syncオプションを指定しない時にはutlrecvコマンドによって相手ホストに要求が通った時点で戻り値0

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

よって-syncオプションを指定しなかった場合はHULFTのログから結果を取得するか、utllistコマンドで転送結果を取得するようにしましょう。

HULFT後続ジョブの結果はコマンド実行結果に表れていないので注意!

HULFTの転送機能の中に前後ジョブの実行があります。

この中で後続ジョブを実行するように設定している場合、

ジョブ実行結果まではutlrecvコマンドの実行結果には反映されない

ので注意しましょう。

ジョブ実行結果を確認したい場合はHULFTのログや実行結果取得コマンドであるutllistコマンドなどで結果を確認する必要があります。

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

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

ただし、配信要求フェーズについては上記のユーティリティ応答待ち時間に依存しませんので注意してください。

配信要求フェーズについては以下に詳細を記載していますが、システム動作環境設定の通信関連設定に依存します。

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

システム動作環境設定の中に通信関連設定というものがあります。

ソケット接続リトライ回数

だったり

ソケット接続リトライ待ち時間

といったソケットと名の付く設定が影響してきます。

特に

ソケット通信応答待ち時間の値がタイムアウトに影響してきます

ので覚えておくと良いです。

配信要求フェーズについてはソケット通信と呼ばれる通信に分類されているという事を忘れないようにしましょう。

HULFTの通信関連設定
  • ソケット接続リトライ回数
  • ソケット接続リトライ待ち時間
  • ソケット通信応答待ち時間
  • ソケット通信バッファサイズ

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

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

こちらも上述したタイムアウト時間と同一で配信要求時点での動作には影響せず、utlsendと同様にデータ転送フェーズの時点で動作する値となります。

よってデータ転送フェーズにだけ影響する値という事を意識し、大容量データの転送を手動で行う際に検討するオプションとなります。

まとめ

HULFT集信要求コマンドutlrecvについてまとめてみました。

集信要求コマンドも配信要求コマンドであるutlsendと同一でテスト時やバッチ・シェルといったプログラムで利用するには便利なコマンドですので、ぜひマスターしてみてくださいね。

スポンサーリンク