問題
(テストのために)Linuxプロセスに偽のシステム時間を使わせたい。
解決
libfaketimeを使って、時間関係のシステムコールをハイジャックする。
ビルド
$ git clone https://github.com/wolfcw/libfaketime && cd libfaketime && make
$ find "$PWD" -name libfaketime.so.1
/XXX/YYY/libfaketime/src/libfaketime.so.1 # ライブラリファイルの絶対パス
使用
※ここで例としてrails s
を実行する
$ LD_PRELOAD=/XXX/YYY/libfaketime/src/libfaketime.so.1 FAKETIME="+0d" rails s
^ # オフセット=0 (現在)
....
[2016-02-24 07:01:41] INFO WEBrick 1.3.1
(Ctrl-C)
$ LD_PRELOAD=/XXX/YYY/libfaketime/src/libfaketime.so.1 FAKETIME="+30d" rails s
^ # オフセット=30日後
...
[2016-03-25 07:02:08] INFO WEBrick 1.3.1
オフセット以外の方法で偽時間を指定する
オフセット(+30d
)以外も指定方法があります、詳細はホームページに。