1つのプロセスにおけるリアルタイムの認識を変える

1つのプロセスにおけるリアルタイムの認識を変える

1 つのプロセスに対するリアルタイムの認識を変更したいと思います。

プロセスに、システム/カーネル/ハードウェア クロックが考える速度の 50% または 150% で時間が経過していると信じ込ませます。

プログラムのソース コードにパッチを適用することなく、どのプログラムでも使用できる汎用的なソリューションを見つけたいと思います。

必要なことを実現するためのツールはありますか?

答え1

コマンドはそのfaketimeために設計されています。たとえば、次のようになります。

$ time faketime -f '+0 x10' sh -c 'date +%T; sleep 10; date +%T'
13:29:02
13:29:12
faketime -f '+0 x10' sh -c 'date +%T; sleep 10; date +%T'  0.00s user 0.00s system 0% cpu 1.009 total

通常の 10 倍の速さでクロックを動かしてシェルを起動しました ( sleep 101 秒間スリープしました)。

クロックは、分数乗数(0.5または0.5(地域によって異なります)など)を使用して遅くすることができます。偽造された最後から2番目本物秒。例えば、次のようになります。

faketime -f '+0 x0.5' watch date

これは、 を使用して実行可能ファイルにコードを挿入することによって機能するLD_PRELOADため、静的にリンクされたアプリケーションやsetuid/setgid実行可能ファイル、またはサニタイズされた環境やユーザー名前空間でコマンドを実行するアプリケーション、または libc システム コール ラッパーを使用せずに時間情報を取得したりスリープしたりするアプリケーションでは機能しません。

関連情報