伪造一个特定的shell会话的date

我当然试图在这里实现一些奇怪的事情,但我想在本地为GNU / Linux上的shell会话伪造date。 我需要黑盒testing程序在不同date的行为,修改系统date可能会产生不必要的副作用(cron作业,混乱的日志等)。

有任何想法吗 ?

还没有尝试过这一个。 但是,如果这是目前看起来像某人已经写了库,你可以用libfaketime预加载。

基本用法是:

user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date Mon Nov 8 12:01:12 CEST 2007 

您可以使用ltrace来确保应用程序使用的所有时间函数都被覆盖。

你可以使用可执行的faketime (从Ubuntu的储存库sudo apt-get install faketime ):

 faketime -f "-15d" date 

甚至在整个shell的假时间

 faketime -f "-15d" bash -l 

您可以将TZvariables设置为一个古怪的值。

 $ date Tue May 4 06:24:43 CDT 2010 $ date -u Tue May 4 11:24:47 UTC 2010 $ export TZ='CDT-3:12' $ date Tue May 4 14:36:53 CDT 2010 $ export TZ='CDT+5:37' $ date Tue May 4 05:48:00 CDT 2010 

您可能可以预加载一个具有另一个time()实现的库。