Изменить восприятие реального времени для одного процесса

Изменить восприятие реального времени для одного процесса

Мне бы хотелось изменить восприятие реального времени для одного процесса.

Заставить процесс поверить, что время идет со скоростью, составляющей 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.

Связанный контент