千家信息网

ntp 时间同步

发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误差几秒到几分钟不等。对于服务器来说时间不准,会有很多麻烦。例如,支付的时候,无法下单,游戏无法登录等。自己用的PC就无所谓了,手动改一下就行了
千家信息网最后更新 2025年12月05日ntp 时间同步

由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误差几秒到几分钟不等。对于服务器来说时间不准,会有很多麻烦。例如,支付的时候,无法下单,游戏无法登录等。自己用的PC就无所谓了,手动改一下就行了。

硬件时间的设置,可以用hwclock或者clock命令。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

//查看硬件时间可以是用hwclock,hwclock --show 或者hwclock -r

[root@localhost ~]# hwclock --show
2008年12月12日星期五 06时52分07秒 -0.376932 seconds

.系统时间和硬件时间的同步

同步系统时间和硬件时间,可以使用hwclock命令。

//以系统时间为基准,修改硬件时间

[root@localhost ~]# hwclock --systohc<== sys(系统时间)to(写到)hc(Hard Clock)
[root@localhost ~]# hwclock -w

//以硬件时间为基准,修改系统时间

[root@localhost ~]# hwclock --hctosys
[root@localhost ~]# hwclock -s

一,用ntpdate从时间服务器更新时间

如果你的linux系统根本没有ntpdate这个命令

  1. yum install ntp

安装完了之后,你不要做什么配置,也不需要,直接测试一下

  1. [root@localhost ~]# ntpdate time.nist.gov

  2. 22 Oct 21:11:43 ntpdate[5014]: adjust time server 207.200.81.113 offset -0.018788 sec

如果出去上面的内容说明,同步成功了。然后在crontab里面加上以下内容。

  1. */10 * * * * ntpdate time.nist.gov #域名或IP

每隔十分钟同步一次。推荐几个时间服务器。

time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org

二,用ntp搭建自己的时间服务器

上面我们是利用别人的时间服务器来同步时间,这些时间服务器都是比较权威的。当我们自己搭建时间服务器就不用crontab来定时去跑。

1,安装时间服务器ntp

  1. yum install ntp

2,配置ntp

  1. [root@localhost ~]# cat /etc/ntp.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'

  2. restrict default ignore //默认不允许修改或者查询ntp,并且不接收特殊封包

  3. restrict 127.0.0.1 //给于本机所有权限

  4. restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify //给于局域网机的机器有同步时间的权限

  5. server time.nist.gov prefer //设置时间服务器,加prefer表示优先

  6. server 0.asia.pool.ntp.org

  7. server 1.asia.pool.ntp.org

  8. server 2.asia.pool.ntp.org

  9. server 127.127.1.0 # local clock

  10. fudge 127.127.1.0 stratum 10

  11. driftfile /var/lib/ntp/drift

  12. keys /etc/ntp/keys

3,启动 ntp

  1. [root@localhost ~]# /etc/init.d/ntpd start

4,查看并测试

  1. [root@localhost ~]# netstat -upnl |grep ntpd //查看时程

  2. [root@localhost ~]# ntpq -pn //查看同步的服务器IP

  3. remote refid st t when poll reach delay offset jitter

  4. ==============================================================================

  5. 50.77.217.185 .INIT. 16 u - 64 0 0.000 0.000 0.000

  6. 202.90.158.4 .INIT. 16 u - 64 0 0.000 0.000 0.000

  7. 202.71.100.89 .INIT. 16 u - 64 0 0.000 0.000 0.000

  8. 202.134.1.10 .INIT. 16 u - 64 0 0.000 0.000 0.000

  9. *127.127.1.0 .LOCL. 10 l 18 64 377 0.000 0.000 0.001

  10. [root@localhost ~]# ntpstat //同步的结果

  11. synchronised to local net at stratum 11

  12. time correct to within 12 ms

  13. polling server every 512 s

remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由"+"则代表目前正在作用钟的上层NTP,如果是"*"则表示也有连上线,不过是作为次要联机的NTP主机。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
when:几秒前曾做过时间同步更新的操作
poll:下次更新在几秒之后
reach:已经向上层NTP服务器要求更新的次数
delay:网络传输过程钟延迟的时间
offset:时间补偿的结果
jitter:Linux系统时间与BIOS硬件时间的差异时间

推荐第一种方法,虽然搭建个时间服务器,还是比较简单的,但是我觉得没有这个必要。如果用别人的时间服务器,每隔10分钟同步一次,可以精确到毫秒。


0