Sziasztok!
(Elnézést azoktól, akik a cím alapján időutazás howto-t vártak.)
Az lenne a kérdésem, hogy mi a legjobb megoldás arra, ha Linux alatt a rendszeridőtől eltérő dátummal szeretnék egy programot lefuttatni (majd a kimenetéhez hozzáférni), mármint automatizáltan, meghívva.
Tehát például 2008.11.21.-én 12:34 perckor szeretnék lefuttatni valamit, parancssorból, hogy a program úgy lássa, hogy annyi az idő.
Ez úgy lenne az optimális, hogy a Linuxon futó alap szolgáltatások ne zavarodjanak meg esetlegesen, ha átállítom az időt.
Ha virtuális gépben csinálom, az biztos működne, mert például snapshotból indítom, átállítom a dátumot, lefuttatom a programot, majd kuka és visszaállás az eredeti snapshotra.
Esetleg konténerben docker-ben futtatva?
A másik, hogy elrakom, hogy most mennyi az idő, elindítok egy "stoppert", átállítom a rendszeridőt, majd a végén az elrakott dátum + az eltelt idő alapján visszaállítom, vagy még egyszerűbb, hogy ntp-vel visszaállítom.
A legésszerűbb, amit találtam:
libfaketime (FakeTime Preload Library) - report faked system time to programs without having to change the system-wide time
http://www.code-wizards.com/projects/libfaketime/
Ennek a hátránya, ha fix dátumot állítok be, akkor mindig változatlan időt mond, nem fog telni az idő. Persze ki lehet számolni, hogy mennyi a különbség a most és a futtatandó idő között, és beállítani azt.
Biztos van ezeknél egyszerűbb, elegánsabb módja, ugye? :)
Köszönöm előre is.
- 1515 megtekintés
Hozzászólások
A libfaketime alapján nem tűnik vészesnek egy olyan megírása, aminek megadsz egy time offsetet, amit le kell vonni az aktuális időből.
- A hozzászóláshoz be kell jelentkezni
És ezt tudja is, ahogy nézem, átszámítani meg azért annyira nem dráma...
- A hozzászóláshoz be kell jelentkezni
Alapvetően két út áll előtted:
- libfaketime-jelleggel, az adott programoknak behazudni egy alternatív időt,
- az egész gépen (vagy VM-ben) átállítani az órát.
Ha licenszeléses dologról van szó (pl. valami lejáró demoverziót akarsz használni), akkor nem biztos, hogy az első megoldás elég lesz. Ugyanis ezek a fineszes köcsögök bizony nem hiszik el alapból az órát, hanem pl. szétnéznek a gépen, a hálózaton is. Mondjuk ha a /var/log-ban frisseb logokat látnak, akkor beintenek. Vagy ha a szoftver adatbázist használ, akkor lekérdezi az adatbázistól is az aktuális időt (esetleg indirekt módon, beírva SQL-ből egy táblába), és ott is meg lehet bukni. Nem utolsó sorban simán kikérdezhet valami Internetes site-ra, NTP szerverre, stb.
A VM-es dolognál arra figyelni kell, hogy pl. a Virtualbox alapból az agentjén keresztül szinkronizálja a hosthoz az időt, ergó vagy kikapcsolod ezt, vagy a hoston is át kell állítani az órát.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a válaszodat. Nem licence ügyben kell.
Sakk-matt,
KaTT :)
- A hozzászóláshoz be kell jelentkezni