LoginSignup
2
0

More than 1 year has passed since last update.

Ubuntu18 ローカルサーバーの時刻を手動で変更する方法

Posted at

環境

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を基準にした時間に戻ってしまいます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0