linux中的时间

基本概念

RTC时间

Real Time Clock。来自主板上的RTC芯片,也叫CMOS时钟、硬件时钟,靠主板上的电池来维持。通过hwclock命令查询或设置。
硬件时钟在关机时仍然存在,在系统关机时将系统时间写回RTC中进行同步。

系统时间

系统时钟(System Clock),由CPUtick维持。内核时钟,本地时间(Local Time),墙上时间(Wall Time)。比如date命令看到的时间。
系统时钟在关机时不存在,操作系统启动时读取RTC时间来进行同步。
Local Time后面带一个CST缩写,代表的是China Standard Time UT+8:00。
(CST也有可能是其他时区的缩写,这里不说了。)
/etc/localtime

GMT时间

格林尼治标准时间,GreenwichMean Time,指位于格林尼治天文台的标准时间。现已不作为标准时间使用,被UTC替代。

UTC时间

世界协调时间,Coordinated Universal Time,以原子时秒长为基准,在时刻上尽量接近格林尼治标准时间。
在Linux配置中,中国选择时区时,应选择 Asia/Shanghai,也就是 UTC+8,也就是在标准时间上加8小时。
timedatectl显示的时间,Universal Time,就是UTC标准时间。

时区

不解释了,北京时间属于东八区。/etc/timezone

NTP

网络时间协议,Network Time Protocol,是用来使计算机时间同步的一种协议。目的是在无序的Internet环境中提供精确和健壮的服务,其时间来源是UTC。

Unix时间戳

是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

命令工具

hwclock
用于查看和设置RTC时间。还有一个类似命令,clock。

timedatectl
用于查看所有时间,包括本地时间、RTC时间、UTC时间、时区、ntp服务同步等等配置。
也可用于设置时区。
设置ntp同步。
等等

tzselect
选择时区。

date
查看和设置local time。

ntp
ntp又是一个比较大的话题,暂不多说。
https://www.cnblogs.com/kerrycode/p/4744804.html
https://blog.csdn.net/weixin_42588262/article/details/82501488
一般作为后台服务运行,相关命令和服务主要有ntpdate、ntpd等。
配置文件有 /etc/ntp.conf /etc/ntp/ntpservers
启动 /etc/init.d/ntpd

修改时间

大概修改时间,不要求同步、精确,date -s ''
手工从某一个服务器同步时间,例如 ntpdate time2.aliyun.com
使用ntpd,/etc/ntpd
对于比较老的发行版,没有timedatectl,可以直接修改文件来达到修改时区的目的。
通过tzselect修改时区为Asia/Shanghai之后,date显示的仍然是PST时间,可以使用这个方法修改date显示,将PST改为CST。

mv /etc/localtime /root
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/etc/init.d/ntpd start

经验和建议

  • 不要使用UI设置时间
  • 使用命令行工具设置时区和时间
  • 默认情况下,系统时间和硬件时间并不会自动同步。
  • 设置了时区之后,local time在没有开启ntp服务的情况下,是不会自动同步到正确时间的,需要手工设置
  • timedatectl是一个好工具。

参考

https://www.cnblogs.com/wangrx/p/6188387.html
https://blog.csdn.net/u013686019/article/details/57126940

原文地址:https://www.cnblogs.com/jamesnpu/p/14482791.html