如何在 Linux 服务器上将日期向前设置并防止其重置回正确时间

如何在 Linux 服务器上将日期向前设置并防止其重置回正确时间

我需要将 Ubuntu 服务器上的时间向前设置 1 周,并将其保留在那里(这是为了具有特定日期条件的测试环境,需要由利益相关者进行测试/验证),但是当我这样做(使用date -s 2010-11-11T00:00:00)时,时间会在大约 30 分钟后重置回“真实”值。

我已经禁用等等NTPntpdate甚至删除了 NTP 包,禁用了munin-node监控等,但它仍然发生,我似乎无法弄清楚发生了什么。

我尝试设置一个脚本来让时间每分钟向前移动一点,但当它在脚本运行之间来回切换时,它会导致 Nginx 和 Varnish 出现奇怪的行为/问题。

有什么建议吗?

(旁注:这是在 EC2 上运行的 Ubuntu 9.10)

附加信息:没有与时间相关的 cron 作业正在运行,我无法访问硬件时钟来尝试将其推动并使用它作为源......

我有点认为这是 EC2 的习语之一 - 无论你做什么,你都会得到一个“真正可靠”的时钟......

答案1

EC2 上的任何虚拟机客户添加是否可能与主机执行独立于 NTP 的时间同步?

答案2

如果你只需要欺骗少数几个流程,你可以使用libfaketime

libfaketime 拦截程序用来检索当前日期和时间的各种系统调用。然后它可以向这些程序报告伪造的日期和时间(由您(用户)指定)。这意味着您可以修改程序看到的系统时间,而无需更改整个系统的时间。

答案3

检查 /etc/cron.d 和 /etc/cron.hourly,你应该在那里找到一些内容。grep 查找 ntpdate 和/或 hwclock。

如果您已经删除了 ntp 包,那么很可能是硬件时钟(hwclock)正在同步。

答案4

一个简单的解决方法可能是将您的时区设置为比当前时区提前一小时(例如 +10 到 +11,或 -8 到 -7)?这样,下次您的时钟同步时,它仍将具有“错误”的时间。

相关内容