在Bash中执行时间戳比较的最佳方式是什么?

我有一个警告脚本,我试图阻止垃圾邮件发送给我,所以我想提出一个条件,如果警报已经发送了,比如最后一个小时,不发送另一个警报。 现在我有一个cron工作,每分钟检查一次情况,因为当条件满足时我需要很快得到提醒,但是我不需要每隔一段时间都收到邮件,直到问题得到控制。 在bash中比较时间的最佳方法是什么?

3 Solutions collect form web for “在Bash中执行时间戳比较的最佳方式是什么?”

到目前为止,最简单的方法是将时间戳存储为虚拟文件的修改时间。 GNU touchdate命令可以设置/获取这些时间并执行date计算。 Bash有testing来检查一个文件比( -nt )更新还是比( -ot )更新。

例如,如果最后一次通知是一个多小时前才发送通知:

 touch -d '-1 hour' limit if [ limit -nt last_notification ]; then #send notification... touch last_notification fi 

使用“testing”:

 if test file1 -nt file2; then # file1 is newer than file2 fi 

编辑:如果你想知道事件发生的时间,你可以使用“触摸”创build一个文件,你可以稍后使用“testing”比较。

使用date命令将两次转换为标准格式,然后减去它们。 您可能会想要将以前的执行时间存储在dotfile中,然后执行如下操作:

 last = cat /tmp/.lastrun curr = date '+%s' diff = $(($curr - $last)) if [ $diff -gt 3600 ]; then # ... fi echo "$curr" >/tmp/.lastrun 

(谢谢,史蒂夫。)

  • Ruby / Rails - 更改时间的时区,而不更改值
  • 吐司LENGTH_LONG和LENGTH_SHORT的持续时间是多less?
  • 我如何String.Format在.NET中自定义格式的TimeSpan对象?
  • 如何获得Python程序执行的时间?
  • 如何将包含时间的stringvariables转换为C ++中的time_ttypes?
  • Python时间比较
  • 如何在iPhone上将NSTimeInterval分解为年,月,日,时,分,秒?
  • 如何在Python中定期运行一个函数
  • 如何将毫秒转换为Java中的“X mins,x秒”?
  • 在PHP中NOW()函数
  • 如何在Xcode中启用生成时间?