一、adjtimex函数命令是作什么用的

adjtimex是Linux内核系统自带的一个时间纠正函数,基本上linux的每个发行版本儿都自带这个函数,该函数主要是用来纠正和调整linux的系统时间。

该函数提供了很多操作命令和指令用来修改操作系统时间的偏差,当发现Linux系统的时间走得快或者是走的慢有一定偏差的时候都可以用该函数进行调整相应的偏移量。

该函数允许使用用户自己来修正时间偏差的,也就是说任何一个用户都可以通过该命令修正linux内核时间,不要小看这个adjtimex函数,其是非常有用的,因为我们在工作中经常会遇到ntp的这种同步问题。

经常用linux操作系统的同学们肯定会有一些这样一个发现,那就是随着使用时间越来越长,系统时间和许多硬件儿时间不一致,偏差会越来越大,这就是我们所说的ntp问题,刚好adjtimex()命令是可以解决这个问题的。

ntp名词解释:NTP是一种协议也可以称一种技术,它的全名叫网络时间同步技术,目的是让系统时间和计算机时间统一标准,提高时间的精度避免时间偏差,主要就是让它们有一个相同的时间。

由于各个国家各个地区的时间设定有一定的偏差,及使用的时间同步的技术都有所不同,因此就诞生出了ntp这种协议,ntp就是来衡量制定这样一个时间精度的的标准,统一计算时间的精度同步实现精度。

二、linux 系统为什么会产生时间偏差

Linux系统之所以会有时间偏差这个概念是因为它有两个时钟概念,它分为硬件儿时钟和系统内核时钟,硬件时钟是Linux系统主板的时钟也叫做RTC时钟,而内核时钟则是由软件系统内核来驱动的,这两个时钟通常会有一定的偏差,因此我们需要使用adjtimex()命令对这两个时间偏差进行纠正。

RTC时钟和内核时钟最大的区别就是RTC时钟是由主板决定的,不管是再开机还是关机的情况下它始终都在,而内核时钟则是由内核软件来决定的,只有在开机的情况下内核时钟才会存在,当关机的时候,内核时钟就会关闭了。

我们通常所需要的时间一般都是用linux的内核时间,内核时间在关机情况下就不存在,因此在Linux系统刚开机的时候,内核时间就会调用RTC使用的时间,然后使两个时间进行同步。

这两个时钟如果长时间的使用的话就会慢慢产生偏差,不做任何操作的话偏差会越来越大,因此时间同步就是我们目前需要解决的这个问题。

三、修正时间的方法与adjtimex命令指令一览

那么我们应该如何修正RTC时间和内核时间的偏差呢?这时候就用到了我们的adjtimex()函数,其下的相关命令可以检测出这两个时钟的偏差时间,正确级别能达到微秒级别。

然后再用该函数下的纠正命令将这个偏差的值调整过来,这样就能让两个时钟的时间相等了,我们也可以将调整时间偏差的这个命令质量做成一个系统启动脚本儿,linux系统每次关机后再开机的时候自动执行这个脚本儿将两个时钟的偏差精度调整到一致。

下面是adjtimex函数的语法以及所有的命令详情:

上图中是该函数所有的命令,它的语法都是adjtimex xxx后面跟着下相应的指令,我们最常用的就是-c -compare指令,该指令就是查看RTC始终和内核时钟的两个时间的偏差的值。

adjtimex -t或者-f这两个指令设置相应的差值和偏移量,可以将两个时钟的差值纠正过来。

四、详解linux系统纠正时间偏差

adjtimex –compare查看时间偏差值

上面讲解完了一系列的理论知识和时间偏差纠正的方法,接下来开始真正的去实践如何修正时间偏差了,详见下图的操作。

上面的截图是我们使用adjtimex –compare命令查询的RTC时钟和内核时钟的具体时间偏差的一个列表,接下来一一介绍一下每个字段所代表的含义。

2nd diff这个字段指的就是内核时钟和RTC时钟中的偏差,tick和freq值这两个字段是需要校正的参考字段,一般根据这两个字段进行校正。

上面的每一条记录都代表着是每十秒做了一次统计,也就是相当于内核时间每十秒钟都慢了0.001xxx秒的时间2nd diff这个值如果是负值,说明系统内核时间慢了,正直的话说明快了。

adjtimex -t修正时间偏差值

接下来用adjtimex -t这个函数命令去修改时间偏差,我们在修正偏差的时候不能只看上面一条数据的偏差值,我们应该连续看多条数据的偏差值取一个平均值进行修正,根据上图显示大概平均值是1微秒,因此我们修正这1微秒的值即可。

由于系统时间是慢了,我们想让它走快些要设置为正数,时间单位又是微妙,因此我们可以用命令:adjtimex –tick 10001进行调整。

adjtimex -f精确时间偏差值

上图是用-t函数命令修改后的时间表,从图中可以看出2nd diff这个值差别已经相当小了,这两个时钟的差距已经不足1微秒。大概只有零点几微秒的差距,如果还想要更精确的修正-t命令不能够实现了,这时候只能使用-F调整他们的偏移量来决定了。

下图是adjtimex -f命令用来修正的修正时间的公式,大家可以利用这个公式来修正剩下那零点几微妙的差别的值。

linux时间同步解析,linux adjtimex详解时间偏差函数ntp同步与offset相关推荐

  1. linux cat时间段,Linux Cat命令及使用详解时间

    Linux Cat命令及使用详解时间 Red Hat Linux 有一个工具程序,它能够帮助你保留简短列表,将这些列表收集起来,甚至向你透漏一点你的系统信息.这个工具叫做Linux Cat,它是con ...

  2. Linux 系统 ldirectord.cf 文件详解

    Linux 系统 ldirectord.cf 文件详解 时间:2012-04-06 09:35 来源:未知 作者:admin 点击:129次 ldirectord使用一个配置文件建立IPVS表,你可以 ...

  3. Linux上的free命令详解

    Linux上的free命令详解 转自: http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上f ...

  4. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入Lin ...

  5. linux服务器怎么查看cpu配置信息,linux服务器cpu信息查看详解

    在linux系统中,提供了/proc目录下文件,显示系统的软硬件信息.如果想了解系统中CPU的提供商和相关配置信息,则可以查/proc/cpuinfo.但是此文件输出项较多,不易理解.例如我们想获取, ...

  6. LINUX经常使用的命令详解

    LINUX经常使用的命令详解 源地址:http://blog.itpub.net/29065182/viewspace-1189162/ 1.man 对你熟悉或不熟悉的命令提供帮助解释  eg:man ...

  7. linux ping大包指令,linux下ping命令使用详解,

    linux下ping命令使用详解, •ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternetGrope),因特网包探索器,用于测试网络连接量的程序. ...

  8. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  9. Linux账号和权限管理详解(超详细示例操作)!

    Linux账号和权限管理详解 一.用户账号和组账号概述 1.1 Linux基于用户身份对资源访问进行控制 1.2 用户账号 1.3 组账号 二.用户账号文件 2.1 用户账号文件 /etc/passw ...

最新文章

  1. linux中offsetof与container_of宏定义
  2. 数据库:SQLServer中in和 exists函数用法笔记
  3. ADO.NET中在C/S模式中使用的连接池
  4. 通过select选项动态异步加载内容
  5. C语言警告warning C4018: '' : signed/unsigned mismatch
  6. canva怎么拼接图片_搭配图片:短款外套+纱裙的冬季搭配,可爱又青春!|周二搭配...
  7. winform的ftp方式上传
  8. 速锐得驾培驾考免接线OBD数据价值及发展思路
  9. qt打包安装程序需要先安装其他驱动或者依赖库的解决方案(Setup Factory)
  10. PHP回调函数用法及分析
  11. [工具] multidesk
  12. moment 的使用 当月第一天
  13. jupyter中markdown模式编辑文本格式
  14. loopback接口的具体作用
  15. 纯CSS实现立体感圆盘(立体化按钮),点击有图
  16. 想给公司起个大气点的名字,大家帮忙啊!!!
  17. 扫盲-----addEventlistener()方法,事件监听(一)
  18. mysql删除重复记录语句
  19. restfulApi相关
  20. 广域网二层之PPP协议

热门文章

  1. php中的setinc,thinkPHP5.0中的setInc,setDec方法
  2. SAP激活表时报错指定参考表和参考字段/建表有MEINS/QUAN类型字段不能激活
  3. mysql老掉线解决方案
  4. Retrofit+多线程下载
  5. Excel如何把一行文字的内容分为多行
  6. Spring Boot 集成 Flyway 实现数据库版本控制
  7. 实战|利用Selenium批量下载100首网易云热歌榜音乐
  8. 细说ARM和X86的江湖恩怨
  9. 厌倦了SE11/SE16N? 告诉你如何在Excel中查看SAP的表数据
  10. canal+zookeeper+mysql高可用配置