Om een specifieke tijdzonegerelateerde bug op te lossen in een softwareproject waaraan ik “werk, probeer ik een wijziging op het systeem te repliceren” s klok met timedatectl om mijn softwaregedrag te controleren.

Ik “probeer dat te bereiken door

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 

Als ik dat doe en timedatectl direct daarna start, krijg ik de verwachte volgende tijd:

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 

Echter, 10 seconden daarna, wanneer de minuut verandert (naar xx:59), de lokale en universele tijd soort “reboot” naar de huidige tijd

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 

Wat mis ik hier?

Mijn setup is een Vagrant Ubuntu 18 VM (Linux vagrant 4.15.0-51 / vm box “bento / ubuntu-18.04”).

Reacties

  • Het is heel goed mogelijk dat uw VM-tijd is gesynchroniseerd met de tijd van uw host '. Niet bekend met Vagrant, dus ' kan u niet naar een oplossing verwijzen.

Antwoord

Dit verklaart niet het gedrag dat u ziet, maar het zou de vraag in de titel moeten beantwoorden.

In plaats van de systeemtijd te veranderen, kunt u een tool gebruiken zoals faketime en de TZ omgevingsvariabele:

$ 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 

Hiermee kunt u uw programma uitvoeren met zijn eigen tijdzone, datum en tijd, zonder de rest van het systeem te beïnvloeden.

Merk op dat aangezien het gebruikt een $LD_PRELOAD hack om code in applicaties te injecteren, het werkt niet voor statisch gekoppelde executables of setuid / setgid executables.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *