
как установить время в Linux таким образом:
1 секунда определяется как 10 секунд (10 секунд = 1 секунда собственного времени)
Я хочу, чтобы все запущенные там процессы использовали в 10 раз меньше времени. Так что sleep(1)
это займет 0,1 реальной секунды.
как этого добиться?
решение1
Вы можете запустить команду (включая оболочку и все ее дочерние элементы) с произвольно более высокой тактовой частотой, используя warp
команду изast-открытыйПакет. Он использует LD_PRELOAD, поэтому не будет работать с setuid или setgid или (сейчас относительно редко) статически скомпонованными программами. Изстраница руководства warp:
warp [параметры] дата [команда [аргумент ...]]
варпвыполняет динамически связанную команду в другом временном интервале, перехватывая системные вызовы, связанные со временем, и изменяя время, видимоекомандаиспользуя формулу:
время = время + варп + (время - база) * (фактор - 1)
гдеварпэто дата-сейчас,базапо умолчанию это дата, ифакторпо умолчанию 1.
ПАРАМЕТРЫ
-b, --base=дата
Установите базовую или начальную датудата. Полезно для повторения набора тестов. Значение по умолчанию — дата.
-f, --factor=фактор
Установите деформированные часы на тиканьефакторсекунд на реальную секунду. Значение по умолчанию — 1.
варпвыполняеткомандас необязательными аргументами илишесликомандаопущено. Все процессы, выполняемыекомандадеформируются в том же временном интервале. Время идет длякомандаи его дети по ставкефакторвремя системных часов. Любые файлы, созданныекомандаили его потомки будут казаться новее, чемдатаккомандаи его дочерние элементы, но на самом деле будут находиться в нормальном временном интервале для неискаженных команд.