Annak érdekében, hogy elhárítsam egy adott időzónával kapcsolatos hibát egy szoftverprojekten, amin dolgozom, megpróbálom megismételni a rendszer változását. s az óra a timedatectl
segítségével ellenőrzi a szoftveres viselkedésemet.
Ezt a futtatással próbálom elérni
timedatectl set-timezone America/New_York timedatectl set-local-rtc 1 timedatectl set-ntp false timedatectl set-time "2017-03-12 01:58:50" && hwclock -w
Amikor ezt megteszem, és rögtön azután lefuttatom a timedatectl
-t, megkapom a várható következő időt:
Local time: Sun 2017-03-12 01:58:51 EST Universal time: Sun 2017-03-12 06:58:51 UTC RTC time: Sun 2017-03-12 01:58:51 Time zone: America/New_York (EST, -0500) System clock synchronized: no systemd-timesyncd.service active: no RTC in local TZ: yes
Azonban 10 másodperccel ezután, amikor a perc megváltozik (xx:59
-re), a helyi és univerzális időfajta “újraindul” az aktuális időre
Local time: Wed 2019-08-07 21:01:41 EDT Universal time: Thu 2019-08-08 01:01:41 UTC RTC time: Sun 2017-03-12 01:58:57 Time zone: America/New_York (EDT, -0400) System clock synchronized: no systemd-timesyncd.service active: no RTC in local TZ: yes
Mi hiányzik itt?
A beállításom egy Vagrant Ubuntu 18 VM (Linux vagrant 4.15.0-51 / vm box “bento / ubuntu-18.04”).
Megjegyzések
- Előfordulhat, hogy a virtuális gép ideje szinkronizálva van a ' gazdagép idejével. Nem ismeri a Vagrantot, így ' nem tud megoldást mutatni Önnek.
Válasz
Ez nem magyarázza meg a látott viselkedést, de meg kell válaszolnia a címben szereplő kérdést.
A rendszer idejének megváltoztatása helyett használhat olyan eszközt, mint például a faketime
és a TZ
környezeti változó:
$ date; faketime -f -15d date; TZ=America/New_York faketime -f -15d date Thu 8 Aug 10:21:13 CEST 2019 Wed 24 Jul 10:21:13 CEST 2019 Wed 24 Jul 04:21:13 EDT 2019
Ez lehetővé teszi a program futtatását a saját időzónájával, dátumával és idejével, anélkül, hogy befolyásolná a rendszer többi részét.
Vegye figyelembe, hogy mivel $LD_PRELOAD
hack használatával kódot futtat az alkalmazásokba, statikusan összekapcsolt futtatható fájlok vagy setuid / setgid futtatható fájlok esetén nem fog működni.