RunAsDate dělá následující:
RunAsDate zachytí volání rozhraní API jádra, která vrátí aktuální datum a čas (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime) a nahradí aktuální datum/čas vámi zadaným datem/časem.
V Linuxu máte několik možností, jak dosáhnout stejné věci:
-
Pokud můžete získat verzi programu pro Windows, možná budete moci spustit RunAsDate pod Wine (ale pozor na nedávnou chybu).
-
Najděte si k tomu knihovnu wrapperů nebo si napište vlastní. Některé možnosti jsou uvedeny níže.
-
Použijte virtuální stroj. To je přehnané, ale protože OS v hostujícím virtuálním počítači je zcela oddělený od základního hostitele, můžete nastavit jeho systémový čas na něco úplně jiného. Nastavení může být rychlejší než ostatní možnosti.
Možnost 2 lze provést různými metodami v závislosti na tom, co se pokoušíte spustit. Níže uvedená odpověď DaveParilla odkazuje na DIY přístup, který vysvětluje různé metody a zahrnuje kód pro spustitelný soubor. Některé další možnosti zahrnují:
-
datefudge
, k dispozici v repozitářích Debian/Ubuntu a na dalších místech. -
Time-Fake perl modul, také v repozitářích Debianu jako balíček
libtime-fake-perl
. -
FakeTime Preload Library (také znám jako
libfaketime
, freshmeat link), knihovna, která dokáže zachytit systémová volání v dynamicky propojených binárních souborech. Dostupné v repozitářích Debianu pro Squeeze a Sid.
Měl jsem stejný problém při hledání alternativy k RunAsDate v Linuxu Ubuntu a dospěl jsem k tomuto řešení.
Vytvořil jsem spouštěč programu, který chci používat s RunAsDate. Pokud se software, který chcete používat, jmenuje Foo, vytvořte na ploše soubor s názvem Foo.desktop a upravte jej pomocí gedit nebo podobného textového editoru. Poté do něj přidejte následující řádky kódu:
[Desktop Entry]
Name=Foo
Comment=Runs the Foo application
Exec=sh -c "sudo date --set '01 Jan 2008 12:00:00'; path/to/Foo; sudo timedatectl set-ntp no; sudo timedatectl set-ntp yes;"
Icon=path/to/icon.png
Terminal=true
Type=Application
StartupNotify=true
Stačí změnit název, komentář a ikonu podle vašich skutečných zdrojů.
Možnost Exec změní systémové datum pro relaci, když používáte aplikaci, a po jejím dokončení se systémové datum automaticky znovu synchronizuje.