
サーバーの更新をチェックし、それらを 1 つずつインストールし、再起動が必要かどうかを確認する cronjob を実行しています。再起動が必要な場合は、スクリプトがreboot
サーバーを再起動します。
ハードウェア クロックは起動時に使用され、システム クロックが使用されるまでに 1 分ほどかかります。
システム クロックに切り替える前は、ログにはサーバーが 1 時間ほど遅れていることが示されていますが、サーバーがハードウェア クロックからシステム クロックに切り替えると、ログは 1 時間ほど進みます。これにより cron デーモンがトリガーされ、サーバー更新スクリプトの時間がすでに経過していることが認識され、再度実行されます。
スクリプトは週に 1 回のみ実行されるように設計されていたため、再起動ループがトリガーされます。
実行するとhwclock --systohc
システム クロックがハードウェア クロックと同期されますが、これは永続的ではありません。再起動すると、時間差は再びなくなります。
私の質問は
システム クロックをハードウェア クロックと永続的に同期するにはどうすればよいですか?
出力timedatectl status
:
Local time: Tue 2018-08-28 12:05:37 CEST
Universal time: Tue 2018-08-28 10:05:37 UTC
RTC time: Tue 2018-08-28 10:05:37
Time zone: n/a (CEST, +0200)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: yes
DST active: yes
Last DST change: DST began at
Sun 2018-03-25 01:59:59 CET
Sun 2018-03-25 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2018-10-28 02:59:59 CEST
Sun 2018-10-28 02:00:00 CET
Warning: The system is configured to read the RTC time in the local time zone.
This mode can not be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.
- CentOS Linux リリース 7.5.1804 (コア)
- これはVPSサーバーです。
- ヨーロッパ/アムステルダム
答え1
あなたのによるとtimedatectl status
:
- ハードウェアクロック(RTC)がUTC時間(
RTC time
)に設定されている場合、 - システムは、ハードウェア クロックをローカル時間 (
RTC in local TZ
) として評価するように設定されています。
その結果、起動時にシステム クロックが 1 時間遅れて設定されます (DST のないタイム ゾーン)。
からman hwclock
:
Linux のような POSIX システムは、システム クロックが UTC タイムスケールで動作するように設計されています。
次のコマンドを実行すると簡単に修正できます。
timedatectl --adjust-system-clock set-local-rtc 0
すべての悪の根源は、RTCが設定されたTZを記憶していないことです。行にはTZ表示がないことに注意してください。時間をハードウェア部品に保存し、TZをファイルに保存するとRTC time
(/etc/adjtime
スプラティック注意)、2 つの情報間の同期が失われやすくなります。
完全を期すために、ハードウェアクロックをローカルに設定しておくべき唯一の状況は、デュアルブートマシンでウィンドウズ。