
我想改變一個進程的即時感知。
讓進程相信時間正在以我的系統/核心/硬體時鐘認為的速度的 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 10
1 秒)。
可以透過使用小數乘數(例如 0.5 或 0,5(取決於您的區域設定))來減慢時脈速度偽造的倒數第二個 2真實的秒。例如參見:
faketime -f '+0 x0.5' watch date
它的工作原理是透過將程式碼注入到可執行檔中LD_PRELOAD
,因此不適用於靜態連結的應用程式或setuid
/setgid
可執行文件,或在清理環境或用戶命名空間中執行命令的應用程序,或在不使用libc系統呼叫包裝器的情況下獲取時間資訊或睡眠的應用程式。