datefudge1
Pretend the system time is different
Usage
datefudge [{-s | --static}]
[{-l | --add-ld-preload
lib}]
at_date
program
[arguments ...]
Overview
datefudge is a small utility that pretends that the system time is different by pre-loading a small library which modifies the time(2), gettimeofday(2) and clock_gettime(2) system calls.
Date format
The at_date argument can be given in any format accepted by the date(1) program, for example "2007-04-01 12:21" or "yesterday", or "next Friday".
Options
-
--static, -s -
Mark the date as a `static' one. The above mentioned system calls will always return the date given in the at_date argument, regardless of time passing. Please note that sub-seconds part of the returned date is always set to 0. See EXAMPLES below.
-
--add-ld-preload lib, -l lib -
Prepend lib to LD_PRELOAD environment variable before executing given program. This option might be useful for example to inject sanitizer libraries (e.g. from Address Sanitizer) to the list of preloaded libraries before the internal
datefudge's library. See EXAMPLES below.
-
--help, -h -
Print short usage information and exit.
-
--version, -v -
Print version information and exit.
Examples
Basic examples:
$ datefudge "2007-04-01 10:23" date -R Sun, 01 Apr 2007 10:23:00 +0200 $ datefudge "1 May 2007" date -R Tue, 01 May 2007 00:00:00 +0200 $ datefudge "2 weeks ago" date -R Wed, 16 Jan 2008 13:32:12 +0100
Non-static vs. static example:
$ datefudge "2007-04-01 10:23" sh -c "sleep 3; date -R" Sun, 01 Apr 2007 10:23:03 +0200 $ datefudge --static "2007-04-01 10:23" sh -c "sleep 3; date -R" Sun, 01 Apr 2007 10:23:00 +0200
Non-static with sub-seconds example:
$ datefudge --static "2007-04-01 10:23:45.123456" date +"%F %T %N" 2007-04-01 10:23:45 000000000
Prepending LD_PRELOAD example:
$ datefudge --add-ld-preload /path/to/libclang_rt.asan-x86_64.so "2007-04-01 10:23" command If the command was compiled by 'clang -fsanitize=address -shared-libasan', then the above command might display some errors, for example: ==7625==ERROR: AddressSanitizer: heap-use-after-free on address 0x614000000044 at pc .... Without the --add-ld-preload argument, this would not work at all.
Releases
11 releases since Debian 3.1 (Sarge); the text changed 6 times.
--add-ld-preload since Debian 11 (Bullseye);
--help since Debian 7 (Wheezy);
--static since Debian 7 (Wheezy);
-h since Debian 7 (Wheezy);
-l since Debian 11 (Bullseye);
-s since Debian 7 (Wheezy);
-v since Debian 7 (Wheezy).