linux“date -s”命令无法更改服务器上的日期

nel*_*aro 6 linux date ntpdate

date +%T --set="12:19:06"
12:19:06
date
Mon Nov 26 12:37:32 SAST 2012

date 112613232012
Mon Nov 26 13:23:00 SAST 2012
date
Mon Nov 26 13:42:27 SAST 2012
Run Code Online (Sandbox Code Playgroud)

我尝试了该命令的许多不同形式,但似乎没有任何效果。在更改此计算机上的日期时,作为虚拟机运行的服务器无法正常工作。

我们的消息日志显示类似这样的消息

ntpd[3496]:-1098秒的时间修正超出了理智限制(1000);手动将时钟设置为正确的 UTC 时间。

我们的服务器现在大约有 20 分钟的时间。

我们的服务器似乎已经有几天没有正确更新时间了。

11 月 22 日 19:29:23 主机名 ntpd[1818]:时间重置 -998.577519 s
11 月 22 日 19:32:34 主机名 ntpd[1818]:同步到 LOCAL(0),层 10
11 月 22 日 19:33:39 主机名 ntpd[1818]:同步到 41.134.20.28,层 1
11 月 22 日 19:52:30 主机名 ntpd[1818]:时间重置 -998.992426 s
11 月 22 日 19:55:47 主机名 ntpd[1818]:同步到 LOCAL(0),层 10
11 月 22 日 19:56:53 主机名 ntpd[1818]:同步到 41.134.20.28,层 1
11 月 22 日 20:13:04 主机名 ntpd[1818]:时间重置 -999.374412 s
11 月 22 日 20:16:40 主机名 ntpd[1818]:同步到 LOCAL(0),层 10
11 月 22 日 20:17:44 主机名 ntpd[1818]:同步到 41.134.20.28,层 1
11 月 22 日 20:32:02 主机名 ntpd[1818]:时间重置 -999.716832 s
11 月 22 日 20:35:28 主机名 ntpd[1818]:同步到 LOCAL(0),层 10
11 月 22 日 20:36:16 主机名 ntpd[1818]:同步到 41.134.20.28,层 1
11 月 22 日 20:56:39 主机名 ntpd[1818]:-1000 秒的时间校正超出了理智限制(1000);手动将时钟设置为正确的 UTC 时间。

nel*_*aro 3

http://www.linuxforum.com/threads/2154-Linux-ntp-time-Offset-on-Xen-VM-in Correct

经过大量搜索,我发现默认情况下,虚拟机的时钟与控制域上运行的主机时钟同步,并且无法独立更改。这让我感到惊讶,因为 NTP 仍然被配置并且似乎能够同步时钟。

将以下行添加到 /etc/sysctl.conf 文件中

# Allow the VM to update it's own clock, and do not use the DOM host clock.
xen.independent_wallclock=1
Run Code Online (Sandbox Code Playgroud)

然后重启网络服务

/etc/init.d/network restart #for redhat, centos, fedora
/etc/init.d/networking restart #debian, ubuntu
Run Code Online (Sandbox Code Playgroud)

现在你可以设置日期date -s ...

这是官方 xen 文档的链接这是ntp 文档
的链接