Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,583)  
CrystalDiskInfo  (1,811)  
Tera Term  (1,787)  
HandBrake Japanese Language Version  (1,743)  
CrystalDiskMark  (980)  
FFFTP  (765)  
ffdshow  (719)  
mixfont-mplus-ipa  (615)  
MergeDoc  (571)  
10  TortoiseSVN  (555)  
11  Amateras  (437)  
12  BathyScaphe  (396)  
13  FreeMind  (372)  
14  Cabos  (327)  
15  ギコナビ  (316)  
More >>

libfaketimeでプロセスに通知する現在日時を変更する

2009年01月16日 10:15 Ben Martin 1 2 3

 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、ファイルシステム、検索ソリューションを中心としたコンサルティング業に従事している。

Linux.com 原文(2008年9月22日)

最終更新:2009年03月18日 17:07
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.