我有一个运行 Photon OS 3.0 的虚拟机。 NTP 未配置,它正在使用硬件时钟。它已经不同步了。硬件时钟hwclock
与虚拟机管理程序时间同步,但当我运行时date
它与硬件不同步。
当我运行时timedatectl
它显示System clock synchronized: no
将其更改为的命令/进程是什么System clock synchronized: yes
$ timedatectl
Local time: Thu 2023-11-02 23:11:03 UTC
Universal time: Thu 2023-11-02 23:11:03 UTC
RTC time: Thu 2023-11-02 23:09:29
Time zone: UTC (UTC, +0000)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
答案1
如果您想将hwclock
时间复制到系统时间(= 显示date
),最简单的命令是
hwclock --hctosys --utc --noadjfile
笔记这将使系统时间向后改变,这对于数据库和其他关心时间戳正确顺序的应用程序来说可能是不利的。
如果必须在应用程序运行时进行此更改,更安全的方法是ntpdate -B <NTP server address>
轻轻地将系统时钟“滑动”到正确的时间。
但上述任何一项都不会改变指示System clock synchronized
。
来自System clock synchronized
内核的计时状态位:当 NTP 服务正在运行并且已成功将系统时钟同步到 NTP 时间源时,它将time_status
使用以下命令翻转内核字中的相应位:adjtimex(2)
系统调用。这是对适当位System clock synchronized
的直接解释。time_status
systemd-timedated
在常规的 Linux 系统中,您技术上可以安装可选的adjtimex
公用事业然后使用手动adjtimex -S 0
将内核time_status
字设置为 NTP 同步生效时通常的状态;但是我不能推荐这个因为这实际上只是对你自己和你的系统撒谎。
还,看来 Photon 操作系统可能没有adjtimex
可用的命令/包无论如何,所以实际的答案可能是“如果不配置 NTP,你就无法做到这一点”。