Есть библиотека libfaketime
(также на GitHub ), которая позволяет заставить систему сообщать приложению о заданном времени. Вы можете либо настроить системный отчет на фиксированное время на время выполнения программы, либо запустить часы в определенное время (например, 01:59:30). По сути, вы подключаете библиотеку faketime к образу вашей программы в памяти через загрузчик библиотеки, и она по-своему фиксирует и обрабатывает все системные вызовы, которые относятся к системному времени. Это точно не меняет системное время, но оно меняет время, сообщаемое вашему конкретному приложению, не затрагивая ничего, что работает, что, вероятно, то, что вы действительно ищете (в противном случае, я не вижу причин, чтобы просто изменить глобальное Системное время).
Существует несколько возможных вариантов его использования, но похоже, что изменение времени, в которое процесс думает, с помощью libfaketime содержит довольно подробный список вместе с примером кода, чтобы опробовать их. Google также сможет найти некоторые примеры, если вы знаете, что искать.
Может показаться, что он недоступен, предварительно упакованный через репозитории RHEL, но, например, Debian предоставляет его под именем пакетаfaketime
. Это также выглядит просто для сборки из исходного кода (по-видимому, даже не требуется configure
шаг или что-то в этом роде).