如何计算总经过时间
how to calculate total elapsed time
如何根据
计算经过的时间
开始时间=
[user001a@dev51 logs]# grep 'Recovery Manager'
refresh_03Jun2019_0250.log|head -1|awk -F'on ' '{print $NF}';
Jun 3 02:50:02 2019
[user001a@dev51 logs]#
结束时间=
[user001a@dev51 logs]# ls -l refresh_03Jun2019_0250.log
-rw-r--r--. 1 user001a grp001a 170050 Jun 3 05:06
refresh_03Jun2019_0250.log
[user001a@dev51 logs]#
注意 - 统计信息缺少出生时间,因此统计信息可能不是一个好的选项时间计算文件创建和修改时间:
[user001a@dev51 logs]# stat refresh_03Jun2019_0250.log
File: `refresh_03Jun2019_0250.log'
Size: 170050 Blocks: 344 IO Block: 4096 regular file
Device: 811h/2065d Inode: 1474545 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 219/ user001a) Gid: ( 219/grp001a)
Access: 2019-06-03 05:06:40.830829026 -0400
Modify: 2019-06-03 05:06:40.827828883 -0400
Change: 2019-06-03 05:06:40.827828883 -0400
[user001a@dev51 logs]#
示例 1 输出:
StartTime=June 3, 2019 at 2:50:02 am
EndTime=June 3, 2019 at 5:06:40 am
ElapsedTime=2 hours, 16 minutes and 38 seconds
样本 2 输出:
ElapsedTime=2 hours, 16 minutes and 38 seconds
此解决方案的限制:最多 23 小时。更多的,需要加上天数。
StartTime="June 3, 2019 at 2:50:02 am"
EndTime="June 3, 2019 at 5:06:40 am"
StartTimeInEpoch=`echo $StartTime | sed 's/at //g' | date -f- +"%s"`
EndTimeInEpoch=`echo $EndTime | sed 's/at //g' | date -f- +"%s"`
echo $EndTimeInEpoch-$StartTimeInEpoch | bc | sed 's/^/@/g' | date -u -f- "+%_H hours %_M minutes %_S seconds"
输出:
2 hours 16 minutes 38 seconds
假设您的日期在变量 StartTime
和 EndTime
中。有必要从中删除 at
,sed
执行此操作。然后将两个日期都转换为纪元时间 +"%s"
就可以了。 -f-
告诉 date
从标准输入(管道)获取日期。然后我们可以减去日期,在开头添加 @
并使用 date
进行格式化。 -u
平均 UTC 时间 - 无时移。
如何根据
计算经过的时间开始时间=
[user001a@dev51 logs]# grep 'Recovery Manager'
refresh_03Jun2019_0250.log|head -1|awk -F'on ' '{print $NF}';
Jun 3 02:50:02 2019
[user001a@dev51 logs]#
结束时间=
[user001a@dev51 logs]# ls -l refresh_03Jun2019_0250.log
-rw-r--r--. 1 user001a grp001a 170050 Jun 3 05:06
refresh_03Jun2019_0250.log
[user001a@dev51 logs]#
注意 - 统计信息缺少出生时间,因此统计信息可能不是一个好的选项时间计算文件创建和修改时间:
[user001a@dev51 logs]# stat refresh_03Jun2019_0250.log
File: `refresh_03Jun2019_0250.log'
Size: 170050 Blocks: 344 IO Block: 4096 regular file
Device: 811h/2065d Inode: 1474545 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 219/ user001a) Gid: ( 219/grp001a)
Access: 2019-06-03 05:06:40.830829026 -0400
Modify: 2019-06-03 05:06:40.827828883 -0400
Change: 2019-06-03 05:06:40.827828883 -0400
[user001a@dev51 logs]#
示例 1 输出:
StartTime=June 3, 2019 at 2:50:02 am
EndTime=June 3, 2019 at 5:06:40 am
ElapsedTime=2 hours, 16 minutes and 38 seconds
样本 2 输出:
ElapsedTime=2 hours, 16 minutes and 38 seconds
此解决方案的限制:最多 23 小时。更多的,需要加上天数。
StartTime="June 3, 2019 at 2:50:02 am"
EndTime="June 3, 2019 at 5:06:40 am"
StartTimeInEpoch=`echo $StartTime | sed 's/at //g' | date -f- +"%s"`
EndTimeInEpoch=`echo $EndTime | sed 's/at //g' | date -f- +"%s"`
echo $EndTimeInEpoch-$StartTimeInEpoch | bc | sed 's/^/@/g' | date -u -f- "+%_H hours %_M minutes %_S seconds"
输出:
2 hours 16 minutes 38 seconds
假设您的日期在变量 StartTime
和 EndTime
中。有必要从中删除 at
,sed
执行此操作。然后将两个日期都转换为纪元时间 +"%s"
就可以了。 -f-
告诉 date
从标准输入(管道)获取日期。然后我们可以减去日期,在开头添加 @
并使用 date
进行格式化。 -u
平均 UTC 时间 - 无时移。