Per risolvere un bug specifico relativo al fuso orario su un progetto software su cui sto lavorando, sto cercando di replicare una modifica sul sistema ” s orologio utilizzando timedatectl per controllare il comportamento del software.

Sto cercando di raggiungere questo obiettivo eseguendo

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 

Quando lo faccio ed eseguo timedatectl subito dopo, ottengo il seguente tempo previsto:

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 

Tuttavia, 10 secondi dopo, quando i minuti cambiano (in xx:59), lora locale e universale di “riavvio” allora corrente

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 

Cosa mi manca qui?

La mia configurazione è una VM Vagrant Ubuntu 18 (Linux vagrant 4.15.0-51 / vm box “bento / ubuntu-18.04”).

Commenti

  • Potresti scoprire che lora della tua VM è sincronizzata con lora del tuo host '. Non ho familiarità con Vagrant, quindi ' t indirizzarti a una soluzione.

Risposta

Questo non spiegherà il comportamento che stai vedendo, ma dovrebbe rispondere alla domanda nel titolo.

Invece di cambiare lora del sistema, potresti usare uno strumento come faketime e la TZ variabile di ambiente:

$ 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 

Ciò ti consentirà di eseguire il programma con il proprio fuso orario, data e ora, senza influire sul resto del sistema.

Nota che poiché utilizza un $LD_PRELOAD hack per iniettare codice nelle applicazioni, non funzionerà con eseguibili collegati staticamente o eseguibili setuid / setgid.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *