RTC time和Local time
在Linux系统中存在两个时钟时间,分别是
硬件时钟RTC(Real Time Clock) 系统时钟(System Clock)
硬件时钟是指的在主板上的时钟设备,也就是通常可以在BIOS画面设置的时钟,即使关机状态也可以计算时间。
而系统时钟则是指Kernel中的时钟,其值是由1970年1月1日00:00:00 UTC时间至当前时间所经历的秒数总和。
当Linux启动的时候,系统时钟会读取硬件时钟的设定,之后系统时钟独立运作。
长时间运行两者可能将会产生误差。
另外所有的Linux相关指令都是读取系统时钟指定的,如date。
NTP
NTP,网络时间协议,使用 123/udp 端口进行网络时钟同步
NTP 是仍在使用中的最古老的网络传输协议之一(1985 年前开始)。
查看时钟是否与互联网同步
OpenSUSE:~ # timedatectl ##openSUSE15.1下查看
Local time: Tue 2020-05-05 10:38:53 CST ##本地时间
Universal time: Tue 2020-05-05 02:38:53 UTC ##协调世界时
RTC time: Tue 2020-05-05 02:38:51 ##硬件时间
Time zone: Asia/Shanghai (CST, +0800) ##时区,我这里为东8区
Network time on: yes ##NTP时间同步是否开启,yes表示是
NTP synchronized: yes ##如果和远程NTP服务器成功同步,显示为yes
RTC in local TZ: no ##no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间
root@HP:~# timedatectl ##Ubuntu18.04下查看,下面的说明都以Ubuntu系统为例说明
Local time: 二 2020-05-05 14:52:52 CST
Universal time: 二 2020-05-05 06:52:52 UTC
RTC time: 二 2020-05-05 06:52:52
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes ##如果和远程NTP服务器成功同步,显示为yes
systemd-timesyncd.service active: yes ##NTP时间同步是否开启,yes表示是,systemd-timesyncd服务为活动也就是开启了NTP时间同步
RTC in local TZ: no
timedatectl 命令显示本地时间、世界时、时区以及系统时钟是否与互联网服务器同步,以及 systemd-timesyncd.service 是处于活动状态还是非活动状态。
修改时区方法
1.使用命令:tzselect
选择亚洲 Asia
确认之后选择中国(China)
选择北京(Beijing)
选择(yes)
2.再次查看时间date -R,已经修改为北京时间
3.单纯的date的输出结果,其中CST表示东八区
以上修改的是系统时间,由操作系统控制。
还有一个硬件时间。使用hwclock --systohc可以将系统时间同步到硬件时间。
硬件时钟和系统时钟
(1) 硬件时钟
RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。
(2) 系统时钟
一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。
硬件时钟设置
(1) 读取时间
timedatectl //等同于 timedatectl status
(2) 设置时区
timedatectl set-timezone Asia/Shanghai
(3) 是否NTP服务器同步
timedatectl set-ntp yes //yes或者no
(4) 将硬件时钟调整为与本地时钟一致
timedatectl set-local-rtc 1
或
hwclock --systohc --localtime //与上面命令效果一致
注意: 硬件时钟默认使用UTC时间,因为硬件时钟不能保存时区和夏令时调整,修改后就无法从硬件时钟中读取出准确标准时间因此不建议修改。
GMT、UTC、CST、DST 时间
(1) UTC
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。
(2) GMT
格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
(3) CST
中国标准时间 (China Standard Time)
(4) DST
夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)
GMT + 8 = UTC + 8 = CST