本节将会讨论如何配置 systemd-timedated 系统服务,包括配置系统时间和时区。
如果你不确定是否将硬件时钟设置为 UTC,可以通过
hwclock --localtime --show
来查看。这将根据硬件时钟显示当前的时间。如果实现和手表的时间相同,应该是设置为本地时间了;如果时间不一致,应该是设置为 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 引导的系统。
从版本号 213 的 systemd 开始,包括了一个名为systemd-timesyncd 的守护进程,将能够和远程的 NTP 服务器同步时间。
此守护进程并不是为了取代已有的 NTP 服务,而是作为 SNTP 协议的实现客户端,它可用于更高级的任务和资源有限的系统。
从版本号 216 的 systemd 开始,systemd-timesyncd 守护进程默认启用,如果需要禁用,执行以下命令:
systemctl disable systemd-timesyncd
/etc/systemd/timesyncd.conf
文件也可以通过 systemd-timesyncd
同步来更改 NTP 服务。
需要注意的是,当使用本地时间作为系统时间时,systemd-timesyncd 无法更新硬件时钟。