私が開発しているソフトウェアプロジェクトの特定のタイムゾーンに関連するバグを解決するために、システムクロックの変更をコピーしてtimedatectl
ソフトウェアの動作を確認しました。
私はこれを実行して達成しようとしています。
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
これを実行してtimedatectl
すぐに実行すると、期待どおりに次の時間が表示されます。
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
ただし、10秒後に分が(xx:59
)に変わると、現地時間と世界時間が現在時刻に「再起動」されます。
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
私がここで何を見逃しているのでしょうか?
私の設定はVagrant Ubuntu 18 VM(Linux vagrant 4.15.0-51/vm box "bento/ubuntu-18.04")です。
ベストアンサー1
これは現在見ている動作を説明していませんが、タイトルの質問に答える必要があります。
システム時間を変更する代わりに、次のツールを使用できます。faketime
とTZ
環境変数:
$ 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
これにより、システムの残りの部分に影響を与えることなく、自分のタイムゾーン、日付、時刻を使用してプログラムを実行できます。
核を使用してアプリケーションにコードを挿入するため、$LD_PRELOAD
静的にリンクされた実行可能ファイルまたはsetuid / setgid実行可能ファイルでは機能しません。