私は確かにここで奇妙な何かを達成しようとしていますが、GNU/Linuxのシェルセッションのローカルで日付を偽装したいと思います。プログラムが異なる日付でどのように動作するかをブラックボックスでテストする必要があります。システム全体の日付を変更すると、望ましくない副作用(cronジョブ、ログの乱れなど)が発生する可能性があります。
何か案は ?
実行可能ファイルfaketime
を使用できます(ubuntuリポジトリからSudo apt-get install faketime
) 沿って:
faketime -f "-15d" date
またはシェル全体の偽の時間でさえ
faketime -f "-15d" bash -l
これはまだ試していません。しかし、これが最新のものである場合は、誰かがすでにライブラリを書いたように見えます libfaketime でプリロードできます。
基本的な使用法は次のとおりです。
user@Host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date
Mon Nov 8 12:01:12 CEST 2007
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
代替のtime()
実装を持つライブラリをプリロードできる場合があります。