关于同步时间linux命令的信息( 二 )


我们这里讨论的是系统时间 。
NTP,网络时间协议,使用 123/udp 端口进行网络时钟同步;NTP 是仍在使用中的最古老的网络传输协议之一(1985 年前开始) 。
以前Linux时间同步基本是使用 ntpdate 和 ntpd 这两个工具实现的,但是这两个工具已经很古老了 。
【注】ntpdate和ntpd是互斥的,两者不能同时使用 。ntpd是步进式平滑的逐渐调整时间,而ntpdate是断点式更新时间 。
RHEL/CentOS 7.x 已经将 chrony 作为默认时间同步工具了 。
其他Linux (如 ubuntu) 使用 systemd-timesyncd 服务 。
chrony 是 RedHat 开发的,它是网络时间协议(NTP)的另一种实现;
RHEL/CentOS 7.x 的默认时间同步工具;
chrony 可以同时做为 ntp 服务的客户端和服务端;安装完后有两个程序 chronyd、chronyc:
chronyd 是一个 daemon 守护进程,chronyc 是用来监控 chronyd 性能和配置参数的命令行工具 。
系统版本:CentOS 7.5
chrony_server(relay):10.0.0.4
chrony_client:10.0.0.5
Edit file /etc/chrony.conf
默认已经启动 , 不需要调整
example:
配置 chrony
edit file: /etc/chrony.conf
再次用chronyc 命令检查,比较它与chronyd server的差异
systemd-timesyncd 是一个用于跨网络同步系统时钟的守护服务 。它实现了一个 SNTP 客户端,但更轻量级,更集成systemd 。
systemd-timesyncd 启动时会读取 /etc/systemd/timesyncd.conf 配置文件,内容如下:
你可以输入你希望使用的其它时间服务器,比如你自己的本地 NTP 服务器,在 NTP= 行上输入一个以空格分隔的服务器列表 。
如果服务器可以直接连接internet,不用修改默认配置;如果在内网 , 需要单独指定 。
在最新的 Ubuntu 版本中,timedatectl 替代了老旧的 ntpdate 。默认情况下 , timedatectl 在系统启动的时候会立刻同步时间,并在稍后网络连接激活后通过 socket 再次检查一次 。
timesyncd 替代了 ntpd 的客户端的部分 。默认情况下 timesyncd 会定期检测并同步时间 。它还会在本地存储更新的时间,以便在系统重启时做时间单步调整 。
通过 timedatectl 和 timesyncd 设置的当前时间状态和时间配置 , 可以使用 timedatectl status 命令来进行确认 。
由于 timedatectl 的存在,各发行版已经弃用了 ntpdate,默认不再进行安装 。
timedatectl
timedatectl status ,查看时间同步状态;
timedatectl set-ntp true,开启网络时间同步;
timedatectl set-timezone ZONE,设置时区 。
NTP synchronized: yes表示时间是同步状态 。
查看服务状态以及从哪个ntp server同步时间 。
NTP:软件层面实现,成本低 。同步精度10ms左右 。
PTP:需要网络接口具备在物理层提供时间戳的功能,同步精度优于100ns,局域网的节点需要使用支持PTP功能的交换机 。局域网网络接点不支持PTP的话,只能同不到us,而且受网络背景流量影响 。
linux系统如何设置时间同步?可以使用ntpdate命令 。ntpdate命令使用网络时间协议(NTP)设置日期和时间,通过轮询指定的确定正确时间的NTP服务器来设置本地日期和时间 。它从指定的每个服务器获得了一些样本,并应用标准NTP时钟过滤器和选择算法来选择最好的样本 。
命令格式:ntpdate 时间服务器
用法示例:$ ntpdate pool.ntp.org
设置时间同步脚本,虽然以上已经同步了时间,但是由于计时精度的原因 , 时间的误差会增大 。可以通过设置计划任务,每天0点同步一下 。
打开crontab进行编辑:$ crontab -e
在crontab任务文件添加:0 0 * * * root ntpate -s pool.ntp.org

推荐阅读