Filewatcherスクリプトの時間計算

Filewatcherスクリプトの時間計算

だから私はうまく動作するファイルウォッチャースクリプトをうまく開発しました。スクリプトは、入力ファイルのリスト(ファイルのフルパス)、区切り文字、および|その他の情報を含むファイルを読み取ります。このような:

/path/to/file/1.txt|600|900|Team1|[email protected]
/path/to/file/2.txt|630|930|Team2|[email protected]
/path/to/file/3.txt|2300|2359|Team3|[email protected]

最初はファイル、2番目と3番目はファイルが通常表示される時間、4番目はファイルを担当するチーム、5番目は電子メールです。

スクリプトは10分ごとに24時間バックグラウンドで実行され、現在の時刻を2番目と3番目の列と比較し、現在の時刻がこの間にある場合はファイルが存在することを確認します。終了時間(3列)が10分未満でファイルが到着していない場合、ファイルが欠落していることを知らせるEメールがチームに送信されます。

定義された時間以降にファイルが到着することを確認するために、終了時間、つまり現在の時間値を確認する別の条件を設定しました。結果が否定的な場合は、ファイルが遅れてSLAを見逃したことを確認してください。ファイルが遅く到着すると、スクリプトはファイルに SLA がないことを通知するメールを送信します。現在のタイムアウト時間(3列目)を使用して、「SLA」を見逃した時間を計算します。たとえば、最初のファイルが930に到着すると(930-900)、30分遅れます。これらすべてがうまくいきます。

質問があります。私の例の最後の行を見ると時間がかかります。2359ファイルが2359年以降に到着するかどうかを計算することはできません(その日が最も高い時間であるため、何も減算しても負の値は生成されません)。明らかに、それより遅い場合、正確なSLA欠落時間を計算することはできません。たとえば、ファイルが100時間に到着すると、スクリプトはファイルがSLA時間の前に到着したと見なし、警告は送信されません(100-2359は負です)。

この問題をどのように克服できますか?

ベストアンサー1

スクリプトを再設計する必要があるかもしれませんが、この種のことを追跡するより簡単な方法は、「エポック」時間間の切り替えを利用し、「ウィンドウ開始時間」の代わりに「ウィンドウ期間」を使用してから現在の時間を変換することです。エポック時間に変換し、ウィンドウで指定した秒数を加えた後、エポック変換された配達時間と比較すると、より簡単に比較できます。

おすすめ記事