libfaketimeに虚偽の日時を設定する3つめの方法は、現在のシステムクロックからの相対オフセット値を指定する方法である。m(分)、h(時間)、d(日)、y(年)という1文字を後ろにつけることにより、オフセット値の単位を指定することができる。デフォルトの単位は秒である。マイナスまたはプラス記号を前につけることにより、現在のシステム日時からオフセット値を引くのか加えるのかを指定する。
デフォルトの虚偽日時を設定したい場合は、ファイル~/.faketimercの中の環境変数FAKETIMEにより値を指定することもできる。faketimeプログラムで~/.faketimercを使用する方法を見つけることはできなかったが、以下のように環境変数LD_PRELOADをエクスポートすれば、うまく動作する。
$ date Sat Sep 6 15:39:58 EST 2008 $ echo '+15m' >| ~/.faketimerc $ export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 $ date Sat Sep 6 15:55:00 EST 2008
最後にもう1つ、虚偽のクロックを実際の時間とは異なる速度で動作させることができるという機能を紹介しておこう。たとえば以下では、前出のtimetestプログラムが通常の2倍の速度で実行される。x2パラメータにより速度を指定している。x0.5など、小数値を指定して、速度を遅くすることもできる。以下の例では虚偽のクロックが実際の2倍の速度で動作するため、timetestで2秒間のsleepの後に取得した2回目の時刻は、4秒後の時刻となっている。
$ faketime -f '+2d x2' ./timetest 1220853830 1220853834
libfaketimeにより、システム日時を変更することなく、ある1つのプログラムが認識するシステムクロックを変更することができる。これは、ネットワークアプリケーションにおいて別のタイムゾーンでの動作や将来の動作をテストしたい場合に便利だ。虚偽の時間の進行速度が変更できるという点は、時間に依存するロジックを有するアプリケーションが、テストマシンよりもずっと高速または低速なハードウェアで動作する場合の様子をテストする際に、ありがたい機能である。
Ben Martinは10年以上にわたってファイルシステムに取り組んでおり、博士課程の修了後、現在はlibferris、ファイルシステム、検索ソリューションを中心としたコンサルティング業に従事している。
