プログラムが別の日時で実行されていると判断できるように、プログラムを実行する方法を本当に探しているようです。
これについて以前の質問がされました:Linux RunAsDate類似? 以下は、私がそこで答えたものです。オプション3を試みているようです。
ntpdate
パッケージはデーモンではなく、すべきではない(それはこれ以上のブート時に一度実行し、必要があります)自動的にシステム時刻を更新します。VirtualBoxについてはあまり詳しくありませんが、ntpd
インストールされているか、VirtualBox Guest AdditionsがホストOSから直接時刻を同期していると思われます。その場合は、無効にするか、いずれかを使用する必要がありますオプション2で後述するラッパーライブラリ。
更新:VirtualBox Guest Additionsがインストールされているように見えます。これは/usr/sbin/vboxadd-timesync
、ゲストクロックをホストのクロックと同期させる実行可能ファイルだと思います。スタートアップスクリプトがインストールされているかどうかを確認します(おそらく/etc/init.d/vboxadd-timesync
)。その場合、との同期を停止できますsudo /etc/init.d/vboxadd-timesync stop
。スタートアップスクリプトがない場合は、おそらくkill
プロセスだけを実行できます。
何RunAsDateは、次のことを行います:
RunAsDateは、現在の日付と時刻(GetSystemTime、GetLocalTime、GetSystemTimeAsFileTime)を返すカーネルAPI呼び出しをインターセプトし、現在の日付/時刻を指定した日付/時刻に置き換えます。
Linuxでは、同じことを達成するためのオプションがいくつかあります。
Windowsバージョンのプログラムを入手できる場合は、Wineの下でRunAsDateを実行できる可能性があります(ただし、最近のバグに注意してください)。
これを行うラッパーライブラリを見つけるか、独自に作成します。以下にいくつかのオプションを示します。
仮想マシンを使用します。これはやり過ぎですが、ゲストVMのOSは基盤となるホストから完全に分離されているため、システム時間をまったく異なるものに設定できます。他のオプションよりもセットアップが速い場合があります。
オプション2は、実行しようとしているものに応じて、さまざまな方法で実現できます。以下のDaveParilloの回答は、さまざまな方法を説明し、実行可能ファイルのコードを含むDIYアプローチにリンクしています。その他のオプションには次のものがあります。