ntp介绍
NTP(Network Time Protocol,网络时间协议)是一种用于同步计算机时间的协议,工作在UDP的123端口上。它是一种客户端-服务器协议,用于同步计算机的时钟。通过连接到网络上的时间服务器,计算机可以获取精确的时间信息,确保其时钟与网络上的其他设备保持同步。
NTP服务器
NTP服务器就是使用NTP协议的服务器,可以在分布式时间服务器和客户端之间同步时间。当NTP服务器用于同步时间时,NTP服务器又可分为客户端和服务端。一般客户端是为了在现有的NTP网络环境下获取前端的NTP服务器,通过网络环境搭建时间同步系统完成时钟功能。服务器端的NTP服务器是用在后端网络环境设备同步时间,如网络钟服务器、计算机等实现时间统一和同步的功能。
新纪元时间
UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。
为什么将1970年一月一日凌晨零点零分零秒作为计算机的起始计算时间?
1969年贝尔实验室的程序员肯汤普逊使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。后来,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX,新版于1971年发布。他们认为以1970年为时间原点足够可以了因此C的 time 函数就这么定了。最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNTIME的纪元时间(开始时间)。
那时的计算机操作系统是32位,时间用32位有符号数表示,则可表示 68 年。用32位无符号数表示,可表示136年。也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000000000000000000000000000也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。时间回归的现象随着64为操作系统的产生逐渐得到解决,2^63/86400 ~ 1E14(天) ~ 2.92E11(年) ,大约是2920亿年。
Linux的两种时钟
系统时钟(System Clock):由Linux内核通过CPU的工作频率进行的计算的。
硬件时钟(RealTime Clock,简称RTC):硬件时钟:硬件时钟是存储在主板上CMOS里的时钟,关机后该时钟依然运行,主板的纽扣电池为它供电。对应于嵌入式设备有一个RTC模块。硬件时钟即RTC时钟。
系统时间是基于内存的,断电就会丢失;硬件时间是写在硬件中的bios程序里的。
系统时间和硬件时间都有两种表示形式:一种是以localtime表示的,一种是以UTC表示的。世界协调时间(Universal Time Coordinated,UTC),UTC就是0时区的时间,(LocalTime)地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时.
安装
sudo yum install -y ntp
启动ntp服务
systemctl start ntpdsystemctl enable ntpd
查看状态
systemctl status ntpd
修改ntp.conf文件
vim /etc/ntp.conf
增加下面配置
server ntp.aliyun.com iburst
重启服务
systemctl restart ntpd
检查同步状态
ntpq -p
常用命令
- 启动 NTP 服务:
sudo systemctl start ntp
- 停止 NTP 服务:
sudo systemctl stop ntp
- 重启 NTP 服务:
sudo systemctl restart ntp
- 查看 NTP 服务状态:
sudo systemctl status ntp
【Linux】使用chrony同步时间-CSDN博客
【Linux】使用ntpdate同步时间-CSDN博客