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]

第一个是文件,第二个和第三个是文件通常出现的时间,第四个是负责该文件的团队,第五个是他们的电子邮件。

该脚本在后台 24/7 每十分钟运行一次,并将当前时间与第二列和第三列进行比较,如果当前时间落在这些时间之间,则检查文件是否存在。当结束时间(第 3 列)不到十分钟且文件尚未到达时,系统会向团队发送一封电子邮件,告知文件丢失。

为了检查文件是否在定义的时间之后到达,我设置了另一个条件来检查结束时间 - 当前时间值。如果结果是否定的,那么它会检查该文件是否晚于并错过了 SLA。如果文件延迟到达,脚本会发送一封电子邮件,指出该文件缺少 SLA。它使用当前时间结束时间(第 3 列)计算“SLA”错过的时间。例如,如果第一个文件在 930 到达,则 (930-900) 晚了 30 分钟。所有这些工作正常。

我只有一个问题。如果你看我的例子中的最后一行 - 时间结束于2359我无法计算文件是否在 2359 之后到达(因为这是一天中的最高时间,减去任何值都不会产生负值)。显然,如果晚于该时间,我也无法计算出正确的 SLA 缺失时间。例如,如果文件在 100 小时到达,则脚本认为该文件在 SLA 时间之前到达,并且不会发送任何警报(100-2359 为负)。

我怎样才能克服这个问题?

答案1

您可能需要重新设计脚本,但是跟踪此类事情的一种更简单的方法涉及利用“纪元”时间之间的转换,以及使用“窗口持续时间”而不是“窗口开始时间”和然后,将当前时间转换为纪元时间,添加窗口指定的秒数,并将其与纪元转换的传送时间进行比较后,您可以更轻松地进行比较。

相关内容