1日の特定の時間にのみ発生するソフトウェアの側面をテストする必要があります。丸1日待つ(そして午前2時にここに到着する)のではなく、時間を変更したいと思います。
しかし、私はそれを永久に変更したくない。
を使用して時間を変更し、date
再び元に戻すことができますが、より良い方法はありますか?
問題のOSは、VMで実行されているRHEL6です。
1日の特定の時間にのみ発生するソフトウェアの側面をテストする必要があります。丸1日待つ(そして午前2時にここに到着する)のではなく、時間を変更したいと思います。
しかし、私はそれを永久に変更したくない。
を使用して時間を変更し、date
再び元に戻すことができますが、より良い方法はありますか?
問題のOSは、VMで実行されているRHEL6です。
回答:
libfaketime
(GitHubにもある)と呼ばれるライブラリがあります。これにより、システムに特定の時間をアプリケーションに報告させることができます。プログラムの実行中にシステムに固定時間を報告させるか、特定の時間(01:59:30など)にクロックを開始することができます。基本的に、ライブラリローダーを介してプログラムのメモリ内イメージにfaketimeライブラリをフックし、システム時間に関連するすべてのシステムコールを独自の方法でキャプチャして処理します。システム時間を正確に変更するわけではありませんが、実行中の他の何かに影響を与えることなく、特定のアプリケーションに報告される時間を変更します。システム時刻)。
使用方法にはさまざまなバリエーションがありますが、libfaketimeを使用してプロセスが考える時間を変更すると、試してみるためのサンプルコードとともにかなり詳細なリストが表示されます。また、Googleは、検索対象を知っていれば、いくつかの例を発掘できるはずです。
RHELリポジトリから事前にパッケージ化されたものは入手できないようですが、たとえばDebianはパッケージ名で提供していますfaketime
。また、ソースコードからビルドするのも簡単です(明らかに、configure
手順などは必要ありません)。
私がすることは、最初にサービスをインストールntp
して、リモートサーバーと時間を同期することです。次に、サービスを停止し、日付を手動で変更し、再生してサービスを再起動します。
service ntpd stop
date -s "Aug 11 2012"
[ do stuff ]
service ntpd start