系统时间可以暂停吗?

系统时间可以暂停吗?

这可能是也可能不是正确的方法,但我要求它的可行性:

我们有一个演示服务器,我们会不时更新它,以保持统计计算最新。我们必须这样做的唯一原因是一些计算/统计数据仅在过去 X 天内显示。

有人问我当使用 UNIX 时间戳进行调用时是否可以停止 CentOS 上的系统时钟。如果时间暂停,每天的计算都会相同,我们将不再需要用新数据刷新数据库。

可能还有其他方法(用最近的时间戳更新当前数据的脚本等),但这个请求引起了我的兴趣,我很好奇是否可能。

答案1

我不认为你可以暂停系统时间。无论如何,很多程序都不会喜欢它,因为它们通常期望时间继续前进。如果你暂停时间,那么任何程序都会进入sleep永远不会醒来。

我不明白你到底想做什么,但我怀疑假时间会做你想做的事。它可以让您以假时间运行程序,以正常速度前进,但与实时时间有偏差,甚至可以让时间流逝X倍快。

如果您需要时间以可变速率执行这些程序,faketime 无法做到这一点,但它可能可以通过一些编程来实现。或者,您可以在虚拟机中运行程序并根据需要在虚拟机中设置系统时间。

答案2

有一个非常简洁的工具,warp它可以以任意方式调整给定进程的时间 - 例如移动甚至缩放! - 而全局系统时间不受影响。时间调整公式为时间=时间+扭曲+(时间-基准)*(因子-1)。详细信息描述于扭曲联机帮助页。它使用的方法是利用DLL预加载功能从系统截取所有时间信息,从技术上讲,为了能够链接到时间函数调用,它需要动态链接的程序。如果满足该前提条件,您可以通过调用透明地使用它,而无需更改可执行文件warp ... program ...(其中第一个是调整后续时间显示方式的...参数)。warpprogram

答案3

您满意的 hacky 解决方案是这样的(作为 root):

export NOW=$(date); watch -n1 date --set=\"$NOW\"

但这可能不是一个好主意:)

相关内容