有时候需要计算命令的执行时间长度,可以使用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脚本示例:计算毫秒级、微秒级时间差相关推荐

  1. linux脚本做分数计算,shell脚本,计算学生分数的题目。

    Java - IDE JDK安装及环境变量配置 下载安装对应版本的JDK 控制面板--->系统--->属性--->高级系统设置--->环境变量 新建系统变量JAVA_HOME ...

  2. Shell脚本中计算字符串长度的5种方法

    这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前S ...

  3. linux 命令行与shell脚本编程大全

    linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...

  4. 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记

    2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...

  5. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  6. Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结

    时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...

  7. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...

  8. 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本

    <linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...

  9. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

最新文章

  1. ActivityManager
  2. python语音播报-用Python写一个语音播放软件
  3. dicom文件_DICOM数据转成NIfTI数据
  4. 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训
  5. sqoop mysql parquet_Sqoop抽取Hive Parquet表数据到MySQL异常分析
  6. 使用sqrt函数开根号:
  7. bat脚本打开刷新网页
  8. html整人js代码大全,Fool.js恶搞整人网页特效jQuery插件
  9. 一文彻底搞懂替罪羊树
  10. 关键词提取:TF-IDF和n-gram
  11. hadoop学习之路(2)
  12. 关于微信群的一个新玩法 (月末总结)
  13. 最新流行的网页网络游戏(九龙朝、傲剑、战千雄、诛神、传承)
  14. java如何处理excel的读取
  15. linux脚本循环创建用户,shell应用之批量添加用户实例
  16. ConnectBot的使用
  17. cufflinks 介绍使用
  18. PCA,LDA的C++实现(内附代码~)
  19. [4G5G专题-30]:物理层-基带无线资源、物理层帧结构、无线资源调度
  20. Python数据分析库:Pandas

热门文章

  1. 操作系统:页面置换算法(FIFO算法、LRU算法、LFU算法、NRU算法)实验报告
  2. pjsip android闪退,android – Pjsip崩溃了RegState回调
  3. Python:实现decision tree决策树算法(附完整源码)
  4. 关于jquery定时器设置问题 ios定时器无法响应问题 ios 时间显示为NaN问题 优惠时间倒计时
  5. TUTK摄像头配网方式之扫码配网
  6. R语言入门教程知识 第一章 R语言
  7. navicat 使用代理跳板机(nginx)连接远程服务器mysql数据库
  8. halcon中如何生成椭圆_教你动态生成椭圆,还教你怎么用海龟作图——GeoGebra制作教程...
  9. 网络安全为人民 网络安全靠人民 —趣谈如何选择网页防篡改产品
  10. Matlab 资料与教材