
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 10
1 秒間スリープしました)。
クロックは、分数乗数(0.5または0.5(地域によって異なります)など)を使用して遅くすることができます。偽造された最後から2番目本物秒。例えば、次のようになります。
faketime -f '+0 x0.5' watch date
これは、 を使用して実行可能ファイルにコードを挿入することによって機能するLD_PRELOAD
ため、静的にリンクされたアプリケーションやsetuid
/setgid
実行可能ファイル、またはサニタイズされた環境やユーザー名前空間でコマンドを実行するアプリケーション、または libc システム コール ラッパーを使用せずに時間情報を取得したりスリープしたりするアプリケーションでは機能しません。