nic*_*laj 40 linux unix shell time unix-shell
我当然想在这里实现一些奇怪的东西,但我想在 GNU/Linux 上为 shell 会话在本地伪造日期。我需要对程序在不同日期的行为进行黑盒测试,修改系统范围的日期可能会产生不需要的副作用(cron 作业、混乱的日志等)。
有任何想法吗 ?
abo*_*nec 40
您可以通过以下方式使用可执行文件faketime
(来自 ubuntu 存储库sudo apt-get install faketime
):
faketime -f "-15d" date
Run Code Online (Sandbox Code Playgroud)
甚至在整个外壳中伪造时间
faketime -f "-15d" bash -l
Run Code Online (Sandbox Code Playgroud)
Kyl*_*ndt 30
这个还没试过。但是,如果这是当前看起来有人已经编写了库,您可以使用libfaketime进行预加载。
基本用法是:
user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date
Mon Nov 8 12:01:12 CEST 2007
Run Code Online (Sandbox Code Playgroud)
您可以使用它ltrace
来确保您的应用程序使用的所有时间函数都被覆盖。
您可以将 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17967 次 |
最近记录: |