環境
Ubuntu 18.04 LTS
はじめに
ローカルサーバーでNTPサーバーが無い環境だと、時刻が少しずつずれていきます。
その時刻を手動で修正するための記事です。
タイムゾーンを設定する記事は多くありますが、時刻設定をする記事はあまり見かけないように思います。
本記事では、以下の条件での時刻設定を対象としています。
- インターネットに繋がっていない
- NTPが設定されていないし、使用しない
- 他の現在時刻とずれている
- タイムゾーン設定は正しい
- date -s コマンドで設定したのに時刻が戻ってしまう
NTPが設定されていない状態とは、以下の状態です。
sudo cat /etc/systemd/timesyncd.conf
[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
失敗するコマンド
date -s では、成功した感じなのに実際の時刻が変更されません。
$ sudo date -s "11/1 12:10 2021"
$ date
Mon Nov 1 12:33:52 JST 2021
timedatectl set-time では、Failedが表示されます。
"Automatic time synchronization is enabled"が表示されていたら、今回の方法が効くと思います。
$ sudo timedatectl set-time "2021-11-01 12:50:00"
Failed to set time: Automatic time synchronization is enabled
#設定方法
##自動時刻同期を確認する
$ timedatectl status
Local time: Mon 2021-11-01 12:54:41 JST
Universal time: Mon 2021-11-01 03:54:41 UTC
RTC time: Mon 2021-11-01 03:54:41
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
- System clock synchronized: yes
- systemd-timesyncd.service active: yes
この部分が、自動時刻同期がオンになっている事を表しています。
UbuntuではNTPの設定をしなくても、時刻同期がされるようです。
##自動時刻同期をオフにする
$ sudo timedatectl set-ntp no
##timedatectlで時刻を設定する
timedatectl set-time 以下のように時刻を変更します。
その後、timedatectl status で設定結果を確認します。
$ sudo timedatectl set-time "2021-11-01 12:10:00"
$ timedatectl status
Local time: Mon 2021-11-01 12:10:05 JST
Universal time: Mon 2021-11-01 03:10:05 UTC
RTC time: Mon 2021-11-01 03:10:05
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
systemd-timesyncd.service active: no
RTC in local TZ: no
- Local time に設定したかった時間が入っている事
- RTC time: Mon 2021-11-01 03:10:05 がUTCの時間と合っている事
- System clock synchronized: no になっていること
- systemd-timesyncd.service active: no になっていること
これで、時刻設定が出来ました。
再起動しても、設定後の時刻で動いています。
##失敗例
時刻設定時にdate -s を使用すると失敗します。
sudo date -s "11/1 12:10 2021"
$ timedatectl status
Local time: Mon 2021-11-01 12:10:06 JST
Universal time: Mon 2021-11-01 03:10:06 UTC
RTC time: Mon 2021-11-01 04:09:19
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
systemd-timesyncd.service active: no
RTC in local TZ: no
RTC time と Universal time がずれているのがわかります。
この状態ですと、再起動時にRTC timeを基準にした時間に戻ってしまいます。