改变对一个流程的实时感知

改变对一个流程的实时感知

我想改变一个进程的实时感知。

让进程相信时间正在以我的系统/内核/硬件时钟认为的速度的 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

启动该 shell,时钟速度是正常速度的 10 倍(休眠sleep 101 秒)。

可以通过使用小数乘数(例如 0.5 或 0,5(取决于您的区域设置))来减慢时钟速度伪造的倒数第二个 2真实的秒。例如参见:

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

它的工作原理是通过将代码注入到可执行文件中LD_PRELOAD,因此不适用于静态链接的应用程序或setuid/setgid可执行文件,或者在清理环境或用户命名空间中执行命令的应用程序,或者在不使用 libc 系统调用包装器的情况下获取时间信息或睡眠的应用程序。

相关内容