1. Linux时间服务 - NTP

1.1. 时间和时区

时间是一个瞬间的概念,全宇宙是唯一的,体现在计算机中可以理解成unix时间戳,目前精确的时间源是参考原子钟的震荡频率,然后同步到全球。

由于地球旋转导致不同地域的人看到的日出日落的时间不同,根据地球的地址位置,人为将地球划分成24个不同的时区。

计算机中经常看到的是UTC时间标准(Coordinated Universal Time的简写),他是0时时区标准。中国时区标准(CST: Chinese Standard Time)相对于0时时区是东八区

例如某一时刻:

  • Unix时间戳:

    [root@VM_11_7_centos ~]# date +%s 
    1496217462
    • UTC时区时间:
    [root@VM_11_7_centos ~]# date -u
    Wed May 31 07:57:42 UTC 2017
    • CST时区时间:
    [root@VM_11_7_centos ~]# date
    Wed May 31 15:57:42 CST 2017

2. NTP工具

2.1. ntpq

ntpq 依据/etc/ntp.conf配置文件进行查询

[root@localhost ~]#ntpq -np 127.0.0.1
     remote refid st t when poll reach delay offset jitter
==============================================================================
*172.31.57.3 LOCAL(0) 4 u 19 32 377 0.123 -0.016 0.003
 172.31.57.4 172.31.57.3 5 u 1 32 377 0.121 -0.017 0.006
 127.127.1.0 .LOCL. 5 l 3 64 377 0.000 0.000 0.001
  • remote - ntp时间源。“+”表示优先,“*”表示次优先
  • refid - remote时间源的上一层时间源
  • st - stratum时间源阶层
  • when - 多少秒前曾经同步过时间,当达到poll时会进行一次同步,然后重新计时
  • poll - 时间更新周期,时间单位秒
  • reach - 已经向上层ntp服务器要求更新的次数.是一个八进制数字,指出源的可存取性。值 377 表示源已应答了前八个连续轮询。
  • delay - 网络延迟
  • offset - 时间补偿,时间偏移
  • jitter - 系统时间与bios时间差

2.2. ntpdate

ntpdate 进行时间的查询和时间同步 使用ntpdate同步时ntpd服务不能允许,否则会报错

指定时间源进行查询

ntpdate -q 0.centos.pool.ntp.org 

如果想定时进行时间校准,可以使用crond服务来定时执行 修改crontab -e

30 8 * * * root /usr/sbin/ntpdate 0.centos.pool.ntp.org; /sbin/hwclock -w

2.3. date

查看和设置系统时间

  • 设置系统时间

    date -s "2017-05-31 12:00:00"
    • 当前unix时间戳
    date +%s
    • 转换指定日期为Unix时间戳
    date -d '2013-2-22 22:14' +%s
    • 将时间戳转换成系统时区时间
    date -d @1361542596
    date -d @1361542596 +"%Y-%m-%d %H:%M:%S"

2.4. ntpd、ntpdate作为客户端的区别

ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步

ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行

时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟。毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。 不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:

  • 第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服 务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。

  • 第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。

  • 第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。

http://time.kepu.net.cn/a05/1131.html http://www.pool.ntp.org/zone/cn cn.pool.ntp.org

http://blog.sina.com.cn/s/blog_521b69c10100jc3d.html

国家授时中心IP,不稳定 210.72.145.44

   server 0.cn.pool.ntp.org
   server 1.cn.pool.ntp.org
   server 2.cn.pool.ntp.org
   server 3.cn.pool.ntp.org
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-01-02 09:51:11

results matching ""

    No results matching ""