Я, конечно, пытаюсь добиться здесь чего-то странного, но я хочу подделать дату локально для сеанса оболочки в GNU / Linux. Мне нужно проверить в черном ящике, как программа ведет себя в разные даты, а изменение общесистемной даты может иметь нежелательные побочные эффекты (задания cron, испорченные журналы и т. Д.).
Любые идеи ?
Вы можете просто использовать исполняемый файл faketime
(из репозиториев ubuntu sudo apt-get install faketime
) по:
faketime -f "-15d" date
Или даже фальшивое время во всей оболочке
faketime -f "-15d" bash -l
Еще не пробовал. Но если это актуально, похоже, что кто-то уже написал библиотеку, которую вы можете предварительно загрузить libfaketime.
Основное использование:
user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date
Mon Nov 8 12:01:12 CEST 2007
Ты можешь использовать ltrace
чтобы убедиться, что охвачены все временные функции, которые использует ваше приложение.
Вы можете установить для переменной TZ необычное значение.
$ date
Tue May 4 06:24:43 CDT 2010
$ date -u
Tue May 4 11:24:47 UTC 2010
$ export TZ='CDT-3:12'
$ date
Tue May 4 14:36:53 CDT 2010
$ export TZ='CDT+5:37'
$ date
Tue May 4 05:48:00 CDT 2010
Возможно, вы сможете предварительно загрузить библиотеку, у которой есть альтернатива time()
реализация.