linux毫秒时间差计算,shell脚本示例:计算毫秒级、微秒级时间差
有时候需要计算命令的执行时间长度,可以使用time命令,虽然time命令可以精确到毫秒级,但time命令无法计算一堆命令的执行时间。可以也可以直接使用date命令计算命令执行前后的时间差,但直接使用date命令计算时间差只能精确到秒级。因此,要计算毫秒级或者微秒级的时间长度,需要对date命令的结果进行一番计算转换。
本文只给出了毫秒级时间差的计算方法,若要计算微秒级时间差,对脚本稍作修改即可。
脚本如下:
#!/bin/bash
# filename: msec_diff.sh
function timediff() {
# time format:date +"%s.%N", such as 1502758855.907197692
start_time=$1
end_time=$2
start_s=${start_time%.*}
start_nanos=${start_time#*.}
end_s=${end_time%.*}
end_nanos=${end_time#*.}
# end_nanos > start_nanos?
# Another way, the time part may start with 0, which means
# it will be regarded as oct format, use "10#" to ensure
# calculateing with decimal
if [ "$end_nanos" -lt "$start_nanos" ];then
end_s=$(( 10#$end_s - 1 ))
end_nanos=$(( 10#$end_nanos + 10**9 ))
fi
# get timediff
time=$(( 10#$end_s - 10#$start_s )).$(( (10#$end_nanos - 10#$start_nanos)/10**6 ))
echo $time
}
#start=$(date +"%s.%N")
# Now exec some command
#end=$(date +"%s.%N")
# here give the values
start=1502758855.907197692
end=1502758865.066894173
timediff $start $end
执行该脚本:
[root@linuxidc.com~]# bash microsecond_diff.sh
9.159
可见结果精确到了毫秒级。
脚本说明:
(1).为了计算毫秒级时间差,所以使用date +"%s.%N"格式。其中"%s"是计算从1970-01-01 00:00:00到当前时间点经过的总秒数,所以计算两个"%s"的差值就计算出了两个时间点的秒级时间差。"%N"是每个时间点的纳秒部分,由于date命令中无法直接得到精确到毫秒的时间,因此只能通过纳秒来计算并转换,于是两个时间点的"%N"就可以计算出纳秒级的时间差。
但需要注意的是,计算纳秒时间差时要考虑是否要将1秒转换成10^9纳秒,以确保纳秒相减时一定得到正数值。
(2)."%N"的纳秒部分如果长度小于9,将以0补齐。例如999纳米,将补齐为000000999。但在数学计算时,以0开头的数值默认会被当作八进制计算,因此需要强行保证它以10进制计算,需要使用"10#"。数学表达式相关内容参见man bash的Arithmetic Evaluation部分。
(3).由于date命令获取到的%s和%N在同一字符串内,因此需要将其分割开来,在上述脚本中采用的是变量切分的方法。
linux毫秒时间差计算,shell脚本示例:计算毫秒级、微秒级时间差相关推荐
- linux脚本做分数计算,shell脚本,计算学生分数的题目。
Java - IDE JDK安装及环境变量配置 下载安装对应版本的JDK 控制面板--->系统--->属性--->高级系统设置--->环境变量 新建系统变量JAVA_HOME ...
- Shell脚本中计算字符串长度的5种方法
这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前S ...
- linux 命令行与shell脚本编程大全
linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...
- 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记
2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...
- Linux命令行与shell脚本编程大全:第2版
<Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...
- Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结
时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...
- 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
下载地址:网盘下载 内容简介 · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...
- 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本
<linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...
最新文章
- ActivityManager
- python语音播报-用Python写一个语音播放软件
- dicom文件_DICOM数据转成NIfTI数据
- 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训
- sqoop mysql parquet_Sqoop抽取Hive Parquet表数据到MySQL异常分析
- 使用sqrt函数开根号:
- bat脚本打开刷新网页
- html整人js代码大全,Fool.js恶搞整人网页特效jQuery插件
- 一文彻底搞懂替罪羊树
- 关键词提取:TF-IDF和n-gram
- hadoop学习之路(2)
- 关于微信群的一个新玩法 (月末总结)
- 最新流行的网页网络游戏(九龙朝、傲剑、战千雄、诛神、传承)
- java如何处理excel的读取
- linux脚本循环创建用户,shell应用之批量添加用户实例
- ConnectBot的使用
- cufflinks 介绍使用
- PCA,LDA的C++实现(内附代码~)
- [4G5G专题-30]:物理层-基带无线资源、物理层帧结构、无线资源调度
- Python数据分析库:Pandas
热门文章
- 操作系统:页面置换算法(FIFO算法、LRU算法、LFU算法、NRU算法)实验报告
- pjsip android闪退,android – Pjsip崩溃了RegState回调
- Python:实现decision tree决策树算法(附完整源码)
- 关于jquery定时器设置问题 ios定时器无法响应问题 ios 时间显示为NaN问题 优惠时间倒计时
- TUTK摄像头配网方式之扫码配网
- R语言入门教程知识 第一章 R语言
- navicat 使用代理跳板机(nginx)连接远程服务器mysql数据库
- halcon中如何生成椭圆_教你动态生成椭圆,还教你怎么用海龟作图——GeoGebra制作教程...
- 网络安全为人民 网络安全靠人民 —趣谈如何选择网页防篡改产品
- Matlab 资料与教材