testing申请时间

我们已经开发了一个内部应用程序,有几个相关的cron在白天的某个时间执行。 这些crons的devise方式是确保他们忽略,例如,在上午7点之前执行,或者每天或每周执行一次。

select这种特定的方法是为了确保在任何人不在办公室时(例如),当前的任务不会被执行,而且如果cron以某种方式执行失败,也允许每X分钟运行一次以“重试”服务器有一些停机时间作为额外的奖金)。

此外,软件的某些部分依赖于当前系统的date,通知其中一个API使用了某些操作,例如删除程序中已经过期的远程对象。 这些部分要么由crons调用,要么由某个用户(在当前时间进行检查)或远程API调用。

我们现在正在和几个最终用户一起testing这个应用程序,我们希望创build一个完全可操作的环境。 但是,由于应用程序中的大部分周期需要一年左右的时间才能完成,因此我们正在寻找使服务器时间“更快运行”的方法,即每个实际分钟左右的一天。 不过,我们还需要每天的每一小时访问,以确保一切顺利。 在testing过程中,服务器的有效时间将会增加1440次。

在Linux(CentOS)服务器上是否有一些“很好”的方法来完成这个工作,还是让另一个cronjob增加时间的唯一方法? 这种方法有缺点吗?

而不是摆弄系统时钟,我会build议使用假时间

假时间预加载库(FTPL,也称为libfaketime)拦截程序用于检索当前date和时间的各种系统调用。 然后,它可以向这些程序报告伪造的date和时间(由您,用户指定)。 这意味着您可以修改程序所看到的系统时间,而无需更改系统范围内的时间。 FTPL允许你指定绝对date(如2004-01-01)和相对date(如10天前)。

然后,您可以编写testing驱动程序,以适当的假时间调用每个系统组件。

这里和这里已经回答了两个类似的问题。

加速系统时钟的最好方法是使用系统调用adjtime或adjtimex,但它们调整时钟的速度非常缓慢,不会干扰依赖精确时间间隔的进程。

cronjob解决scheme会导致定时跳转,这肯定会干扰服务器上运行的某些程序(例如,如果时钟跳过应该启动的时间,cron可能无法启动任务)