我当然想在这里实现一些奇怪的功能,但我想在 GNU/Linux 上为 shell 会话在本地伪造日期。我需要黑盒测试程序在不同日期的行为,修改系统范围的日期可能会产生不良的副作用(cron 作业、混乱的日志等)。
有任何想法吗 ?
答案1
您可以通过以下方式使用可执行文件faketime
(来自 ubuntu 存储库sudo apt-get install faketime
):
faketime -f "-15d" date
或者甚至可以在整个 shell 中伪造时间
faketime -f "-15d" bash -l
答案2
还没有尝试过。但如果这是最新的,看起来有人已经编写了你可以预加载的库libfaketime。
基本用法是:
user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date
Mon Nov 8 12:01:12 CEST 2007
您可以使用它ltrace
来确保您的应用程序使用的所有时间功能都被覆盖。
答案3
您可以将 TZ 变量设置为一个奇怪的值。
$ 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