7.5. 配置系统时间

本节将会讨论如何配置 systemd-timedated 系统服务,包括配置系统时间和时区。

如果你不确定是否将硬件时钟设置为 UTC,可以通过 hwclock --localtime --show 来查看。 这将根据硬件时钟显示当前的时间。如果显示的和手表的时间相同,应该是设置为本地时间了; 如果 hwclock 输出的时间不一致,应该是设置为 UTC 了。通过增减数小时,可以确定你所在时区。

systemd-timedated 读取 /etc/adjtime, 然后确定是本地时间还是 UTC 时间。

如果想要将硬件时钟设置为本地时间,使用以下命令建立 /etc/adjtime

cat > /etc/adjtime << "EOF"
0.0 0 0.0
0
LOCAL
EOF

如果第一次启动时 /etc/adjtime 文件不存在, systemd-timedated 会认为硬件时钟设置成 UTC 并且以此调整该文件。

你也可以使用 timedatectl 程序来告诉 systemd-timedated 你的硬件时钟是 UTC 还是本地时间:

timedatectl set-local-rtc 1

timedatectl 也可以用来更改系统时间和时区。

要更改当前系统时间,使用下面的命令:

timedatectl set-time YYYY-MM-DD HH:MM:SS

硬件时钟也会相应更新。

要更改当前时区,使用下面命令:

timedatectl set-timezone TIMEZONE

你可以通过运行下面命令查看可用时区列表:

timedatectl list-timezones
[注意]

注意

timedatectl 仅可用于 systemd 环境。

7.5.1. 网络时间同步

从版本号 213 的 systemd 开始,包括了一个名为 systemd-timesyncd 的守护进程,将能够和远程的 NTP 服务器同步时间。

此守护进程并不是为了取代已有的 NTP 服务,而是作为 SNTP 协议的实现客户端,它可用于更高级的任务和资源有限的系统。

从版本号 216 的 systemd 开始,systemd-timesyncd 守护进程默认启用,如果需要禁用,执行以下命令:

systemctl disable systemd-timesyncd

systemd-timesyncd 也可以通过配置 /etc/systemd/timesyncd.conf 文件同步更改 NTP 服务。

需要注意的是,当使用本地时间作为系统时间时,systemd-timesyncd 无法更新硬件时钟。