命令行设置系统时间
在Linux上设置系统时间命令,传统上非常简单,就是用一条 date
命令。然而,结合NTP协议部署,以及时区、硬件时钟同步,实际上需要我们注意一些基本的配置。
系统时间显示
首先我们介绍一下最简单的显示系统时钟和调整的方法: date
首先
date
是一个显示系统时间命令:
显示输出类似
对于主机,哟一个硬件时钟,可以通过
hwclock
命令显示:
或者
显示输出
可以显示对应的世界协调时(Coordinated Universal time, UTC):
显示输出依然是东八区时间
hwclock
Linux的系统时间和主机的硬件时间是两套系统,使用 hwclock
可以显示也能调整系统硬件时钟
hwclock
命令默认显示硬件时钟,参数-r
和--show
相同:
和 date
命令不同, date
命令显示的是内核维护的时钟
手工设置硬件时钟和系统时钟
hwclock
提供了--set
和--date
选项来调整硬件时钟
date
命令提供了--set="SRING"
方式设置系统时间:
此外也可以通过格式传递方式来设置日期和时间
同步(copy)系统时钟到硬件时钟
通过NTP协议可以校准Linux内核维护的系统时钟,但是如果没有持续的联网NTP校准维护,系统时钟有可能偏移或者服务器重启后又回退到采用硬件时钟(可能不准确),所以我们需要把NTP校准(或者手工校准)时钟同步到硬件时钟:
hwclock
提供了参数 -w
和 --systohc
都可以实现把系统时钟写入到硬件时钟,矫正硬件时钟:
同步硬件时钟到系统时钟
如果硬件时钟准确,但是系统时钟偏移(这种情况比较少见),可以通过 -s
参数 或者 --hctosys
参数把硬件时钟同步到系统时钟:
timedatectl
现在来介绍 systemd
配套大杀器 timedatectl
工具,这是现代化Linux提供的完整时间调整工具
时间
显示时间
显示输出
调整时间
举例
举例
时区
显示所有支持时区
设置时区
NTP同步
timedatectl
提供了启用ntp同步方法
此时使用 timedatectl
命令可以看到:
注意,默认配置 /etc/systemd/timesyncd.conf
配置需要确保能访问正确时间服务器
如果服务器能够访问internet,则即使没有配置NTP服务器,也可以通过 FailbackNTP
访问internet上公共NTP服务器进行时间同步,过一会再次使用 timedatectl
命令检查可以看到同步
参考
Last updated