den*_*ski 2 command-line bash timestamp
我在日志文件中记录了以下两次,每 5 分钟检查一次反向 SSH 连接。如果连接断开,它会记录中断并每 5 分钟尝试重新连接一次。
我想计算这两次之间的差异。我假设这个过程是:
1) 将它们转换为时间戳。
2)从另一个中减去一个。
3) 显示结果。
BROKEN: Jun 29 16:15:01 IST 2017
RESTARTED: Jun 29 16:15:21 IST 2017
Run Code Online (Sandbox Code Playgroud)
如何将上述内容转换为上述时间戳?还是我看错了?
基本使用方法date:
从行中提取日期:
$ sed -n '/BROKEN/ s/BROKEN: //p' file
Jun 29 16:15:01 IST 2017
Run Code Online (Sandbox Code Playgroud)
转换为纪元时间
$ date -d "Jun 29 16:15:01 IST 2017" "+%s"
1498733101
Run Code Online (Sandbox Code Playgroud)
重复和减去(我在这种日期格式上遇到了一些分词问题,所以我只是对整个事情进行了命令替换。也许有更简洁的方法):
$ BROKEN=$(date -d "$(sed -n '/BROKEN/ s/BROKEN: //p' file)" "+%s")
$ RESTARTED=$(date -d "$(sed -n '/RESTARTED/ s/RESTARTED: //p' file)" "+%s")
$ echo $((RESTARTED-BROKEN))
20
Run Code Online (Sandbox Code Playgroud)
当然,差异会在几秒钟内显现出来......
| 归档时间: |
|
| 查看次数: |
4335 次 |
| 最近记录: |