NTP:成本低,对硬件没要求。同步精度10ms左右。
PTP:需要网络接口具备在物理层提供时间戳的功能,同步精度优于100ns,局域网的节点需要使用支持PTP功能的交换机。局域网网络接点不支持PTP的话,只能同不到us,而且受网络背景流量影响
https://blog.csdn.net/woswod/article/details/82345380
https://blog.csdn.net/u013431916/article/details/83054369
一、ntp协议
Windows时间服务
从Windows 2000起的所有Microsoft Windows版本都包括Windows时间服务(W32Time),其具有将计算机时钟同步到NTP服务器的能力。微软称W32Time服务不能可靠地将同步时间保持在1至2秒的范围内。如果需要更高的精度,微软建议使用其他NTP实现。
windows高精度同步说明(Windows 10 和 Windows 服务器 2016)
官方说明:https://support.microsoft.com/zh-cn/help/939322/support-boundary-to-configure-the-windows-time-service-for-high-accuracy-environments
参考文章:http://blog.csdn.net/fan_hai_ping/article/details/8161306
用ntp同步两台机器的时间
1.安装:
1.1.windows上安装ntp
百度中搜ntp for Windows可以找到官方网站
软件下载:https://www.meinbergglobal.com/english/sw/ntp.htm#ntp_stable
安装说明:http://www.satsignal.eu/ntp/setup.html
1.2.Ubuntu上安装ntp
直接apt-get install ntp即可
2.使用:
其中一台作为服务器另一台作为客户端(window的cmd要以管理员身份运行)
分别举例说明:以Windows和Ubuntu做为服务器分别说明
2.1.Windows作为服务器
2.1.1在Windows上安装完ntp软件以后(软件自带了ntpdate命令,不需要再安装ntp客户端了)
将安装目录‘’Tools/etc/ntp,conf‘’文件中
去除server 127.127.1.0和fudge 127.127.1.0 stratum 12 前的#符号(最好将stratum 12 改成 stratum 8)
然后重启ntp,先用命令net stop ntp再用命令net start ntp
2.1.2在Ubuntu的root权限下运行 ntpdate -b ip(服务器ip地址) 即可同步两台机器的时间
2.2.Ubuntu作为服务器
2.2.1修改/etc/ntp.conf文件。
a.添加这两行
server 127.127.1.0
fudge 127.127.1.0 stratum 10
b.重启ntp服务
先service ntp stop再service ntp start
2.2.2在Windows的管理员权限的cmd中
启动了ntp之后默认是作为服务器的,要用ntpdate命令需要先关闭服务器。
在cmd中运行net stop ntp,然后运行 ntpdate -b ip(服务器ip地址)
3.错误解决
3.1:ntpdate[5588]: bind() fails: Permission denied
以管理员身份在cmd中运行ntpdate -b 192.168.195.129
出现错误: 7 Jun 17:01:28 ntpdate[5588]: bind() fails: Permission denied
解决方法:这是由于没有关闭ntp的原因,ntp和ntpdate不能同时运行。使用net stop ntp之后就可以正常运行了
3.2:ntpdate[4565]: the NTP socket is in use, exiting
运行ntpdate -b ip后出现ntpdate[4565]: the NTP socket is in use, exiting
解决方法:service ntp stop关闭ntp服务(ntp客户端和服务端只能同时存在一个)
3.3: no server suitable for synchronization found
运行ntpdate -b ip后出现 no server suitable for synchronization found
解决方法:1.确认对端ntp服务有没有起 用命令ntp -p查看
2.这里有详细的解决http://www.blogjava.net/spray/archive/2008/07/10/213964.html
其他错误解决:http://www.chinaunix.net/old_jh/4/461976.html
4.其它
4.1:参考网址:
使用ntp进行时钟同步:http://blog.csdn.net/strangerzz/article/details/45243981
CentOS 7 中使用NTP进行时间同步:http://www.linuxidc.com/Linux/2015-11/124911.htm
4.2:命令说明
命令:ntpq -pn结果说明
remote:亦即是 NTP 主机的 IP 或主机名啰~注意最左边的符号
如果有『 * 』代表目前正在作用当中的上层 NTP
如果是『 + 』代表也有连上线,而且可作为下一个提供时间更新的候选者。
refid:参考的上一层 NTP 主机的地址
st:就是 stratum 阶层啰!
when:几秒钟前曾经做过时间同步化更新的动作;
poll:下一次更新在几秒钟之后;
reach:已经向上层 NTP 服务器要求更新的次数
delay:网络传输过程当中延迟的时间,单位为 10^(-6) 秒
offset:时间补偿的结果,单位与 10^(-3) 秒
jitter:Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒。
ntpdate:参数
-p指定运行几次
-d一次同步到位(大于500ms一次同步,小于500ms不能一次同步到位所以要加-b参数)
———————————————
原文链接:https://blog.csdn.net/tsh123321/article/details/72901972
ubuntu相关设置
0 背景
在局域网环境下,嵌入式终端的时间容易出现错乱,因此,设置一个时间同步服务器,让局域网内的客户端自动与服务器时间同步
1修改时区
如果是有一块新板子,时区设置默认使用UTC国际标准时区,我们需要修改为CST北京时间的时区
首先输入date查看自己的时间时区,可以看到是UTC时区,如果是CST时区则可以跳过这个步骤
然后输入tzselect,选择5
输入国家,选择9,输入区域选择1
输入1确认,执行TZ='Asia/Shanghai'; export TZ生效,并将这些指令写入.bashrc文件中,source一下,重启电脑,再次运行date可看到已经到了CST时区
2 设置服务器
在服务端安装相关软件
sudo apt-get install ntp
/etc/init.d/ntp start
3 设置客户端
sudo apt-get install ntpdate
ntpdate 192.168.*.* //服务器地址
执行后会显示调整时间
4 定时更新
上述指令是一次性更新,如果我们想要让客户端定期去更新维护,则需要用到crontab指令
sudo vi /etc/crontab
# m h dom mon dow user command
30 08 * * * root /usr/sbin/ntpdate 192.168.*.*
表示每天8:30自动执行ntpdate指令,与服务器时间同步
————————————————
原文链接:https://blog.csdn.net/zong596568821xp/article/details/90602611
Linux默认情况下使用UTC格式作为标准时间格式,如果在Linux下运行程序,且在程
序中指定了与系统不一样的时区的时候,可能会造成时间错误。如果是Ubuntu的桌面版,则可以直接在图形模式下修改时区信息,但如果是在Server版
呢,则需要通过tzconfig来修改时区信息了。使用方式(如将时区设置成Asia/Chongqing):
sudo tzconfig,如果命令不存在请使用 dpkg-reconfigure tzdata
然后按照提示选择 Asia对应的序号,选完后会显示一堆新的提示—输入城市名,如Shanghai或Chongqing,最后再用 sudo date -s “” 来修改本地时间。
按照提示进行选择时区,然后:
sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
上面的命令是防止系统重启后时区改变。
cn.pool.ntp.org是位于中国的公共NTP服务器,用来同步你的时间(如果你的时间与服务器的时间截不同的话,可能无法同步时间哟,甚至连sudo reboot这样的指令也无法执行)。
windows设置服务器
今天给大家分享一个在windows服务器上部署ntp服务器的方法。
时间服务器设置:
1. 选择一台服务器作为时间同步服务器。
2. 运行Regedit,打开注册表编辑器。
3. 找到注册表项HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig,在右侧窗口中将AnnounceFlags的值修改为5。
4. 继续找到注册表项HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer,在右侧窗口中将Enabled的值修改为1。
5. 在命令行中输入"net stop w32time (停止)&& net start w32time(启动)"重启W32Time服务(在服务中,重启时间服务)。
6. 关闭防火墙
windows时间服务器客户端配置方法
客户机设置:
1.打开修改日期与时间的窗口,进入"Internet Time" 选项,输入时钟同步服务器的网址或IP地址。
2. 设置同步时间间隔:
默认的同步时间间隔是7天,实在是太久了,可以修改为你想要的同步时间间隔。
在客户端电脑上打开注册表编辑器,
找到注册表项 ,
在右侧窗口中找到SpecialPollInterval,打开修改窗口,选择十进制,输入同步时间间隔即可(单位为秒)。
实践
1.服务器
下载ntp协议
sudo apt install ntp
sudo apt install ntpdate
修改文件
sudo gedit /etc/ntp.conf
具体修改见文件
启动ntp协议
sudo service ntp start
2.client端
下载ntp 和ntpdate
修改文件,具体修改的是server的地址,把之前的地址池注释掉
关掉ntp协议
运行几次ntpdate (后+地址)
打开ntp协议
查看watch ntpq -pn