CentOS 7 日期及同步

Scroll Down

在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。

1.GMT、UTC、CST、DST 时间

  • UTC
      整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。

  • GMT
      格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

  • CST
      中国标准时间 (China Standard Time)

GMT + 8 = UTC + 8 = CST  
  • DST
      夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。(中国不使用)

2.硬件时间和系统时间

  • 硬件时间
      RTC(Real-Time Clock)或CMOS时间,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

  • 系统时间
      一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

3.timedatectl 命令

3.1 查看当前系统时间

timedatectl  
timedatectl status  

3.2 设置当前时间

timedatectl set-time "YYYY-MM-DD HH:MM:SS"  
timedatectl set-time "YYYY-MM-DD" # 修改日期不同时修改时间,将重置现在的时间为00:00:00.  
timedatectl set-time "HH:MM:SS"  

这个命令同时更新系统时间和硬件时钟,结果类似于date –sethwclock –systohc命令。
开启 NTP 时间同步是不能用这个命令来设置时间,这一点需要注意一下。

3.3 查看所有可用的时区

timedatectl list-timezones  
# 只看亚洲的
timedatectl list-timezones |  grep  -E "Asia/S.*"  

3.4 设置时区

timedatectl set-timezone Asia/Shanghai  

3.5 设置硬件时间

# 硬件时间默认为UTC
timedatectl set-local-rtc 1  
# hwclock --systohc --localtime
# 两条命令效果等同

当参数值为 0/no 时使用的是UTC时间,此时的值为:no(或者n, false, f, 0),默认值为no。
如果设置为yes的话可能会有警告,此处不建议修改为yes。

3.6 启动自动同步时间

timedatectl 命令可以用来控制是否开启 NTP,开启 NTP 将启动 chronyd 或者 ntpd 服务,依赖于被安装的那个。

timedatectl set-ntp yes  
# yes或no; 1或0也可以

执行 set-ntp 时会同时开启或关闭 ntpd 或者 chronyd 服务。但是 ntpd 服务和 chronyd 可以通过systemctl 命令来单独控制,不是必须使用 timedatectl 来进行控制。

如果使用 set-ntp 是 yes 的状态(即:timedatectl命令中NTP enabled状态显示为yes),那么将不能同时使用 set-time 来修改时间。

默认是开启 NTP 时间同步的,在修改 NTP 或 chrony 的时间设置之后不会立即生效,需要重启 timedatectl 服务。

systemctl restart systemd-timedated.service  

4. Chrony 服务器

4.1 简介

Chrony:是网络时间协议的 (NTP) 的另一种实现,由两个程序组成,分别是 chronyd 和 chronyc。

chronyd:是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。

chronyc:提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

优势:

  • 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,这对于并非全天 24 小时运行的台式计算机或系统而言非常有用。
  • 能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用。
  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响。
  • 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性。
  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟。

注意:在 CentOS7 下为标配的时间同步服务,当然也可以使用以前的NTP同步方式,不过要安装NTP服务。

4.2 安装使用

CentOS 7 下默认安装。

yum install chrony  
systemctl start chronyd  
systemctl enable chronyd  

4.3 配置文件修改

cat /etc/chrony.conf  

主要修改 server 部分

server ntp1.aliyun.com  
server time1.aliyun.com  
server cn.pool.ntp.org  
server pool.npt.org  
server 0.centos.pool.ntp.org iburst  
server 1.centos.pool.ntp.org iburst  
server 2.centos.pool.ntp.org iburst  
server 3.centos.pool.ntp.org iburst  

5. ntp

CentOS 7 下不推荐

yum -y install ntp ntpdate  

设置系统时间与网络时间同步

ntpdate cn.pool.ntp.org  

将系统时间写入硬件时间

hwclock --systohc  

可参考:centos7之关于时间和日期以及时间同步的应用