改變對一個流程的即時感知

改變對一個流程的即時感知

我想改變一個進程的即時感知。

讓進程相信時間正在以我的系統/核心/硬體時鐘認為的速度的 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系統呼叫包裝器的情況下獲取時間資訊或睡眠的應用程式。

相關內容