Kinaconの技術ブログ

Ubuntuはじめました。

Ubuntuで日時情報を設定する

f:id:m-oota-711:20190126190539p:plain

ubuntu18.04の時間を設定する必要があり
その時の備忘録。


目次


日時設定を確認


確認方法

#コマンド

timedatectl


#コマンド出力

                      Local time: 土 2019-01-26 14:37:55 JST
                  Universal time: 土 2019-01-26 05:37:55 UTC
                        RTC time: 土 2019-01-26 05:37:55
                       Time zone: Asia/Tokyo (JST, +0900)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no


日時設定について

種別 概要 変更方法
Local time システムが持つ日時情報。現地時刻を示す。
Universal time と合わせてシステムクロックと呼ばれる。
NTP、システム設定、dateコマンドで設定可能
Universal time システムが持つ日時情報。世界標準時刻を示す。
Local time と合わせてシステムクロックと呼ばれる。
Local time に連動して変更される。
RTC time ハードウェアが持つ日時情報。
リアルタイムクロックと呼ばれる。
BIOS/UEFIやhwclockコマンドで設定可能


NTPサーバーを変更して日時設定する

Ubuntuではデフォルトで ntp.ubuntu.com がサーバに設定されている。
systemd-timesyncd サービスによって上記NTPサーバーと同期されている。


# systemd-timesyncd の状態確認

sudo systemctl status systemd-timesyncd.service


# 同期ができている場合の出力例

systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor
   Active: active (running) since Sat 2019-01-26 13:56:43 JST; 45min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 533 (systemd-timesyn)
   Status: "Synchronized to time server 91.189.89.199:123 (ntp.ubuntu.com)."
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/systemd-timesyncd.service
           └─533 /lib/systemd/systemd-timesyncd

 1月 26 13:56:42 T460s systemd[1]: Starting Network Time Synchronization...
 1月 26 13:56:43 T460s systemd[1]: Started Network Time Synchronization.


Status: "Idle." の場合はサーバーと同期できていない


NTPサーバーを変更する

会社などでプロキシー環境では、指定されたNTPサーバーがあるので
その場合は /etc/systemd/timesyncd.conf を修正して変更する。


sudo nano /etc/systemd/timesyncd.conf


# 修正前

#NTP=
#FallbackNTP=ntp.ubuntu.com

# 修正後

NTP=XXX.co.jp
FallbackNTP=ntp.ubuntu.com


systemd-timesyncd を再起動

sudo systemctl restart systemd-timesyncd.service


NTPサーバーとの同期確認

sudo systemctl status systemd-timesyncd.service


以下のようになっていればOK。

Status: "Synchronized to time server 1xx.1xx.2xx.1xx:1xx (XXX.co.jp)."


日時設定も確認

timectl を確認すると
システムクロック、リアルタイムクロックすべて同期されているはず。


NTPサーバー変更ができない場合


システムクロックを設定する

HTTP経由で日時情報を取得し、dateコマンドで設定する

sudo date --set @"$(wget -q https://ntp-a1.nict.go.jp/cgi-bin/jst -O - | sed -n 4p | cut -d. -f1)"

※ certificateエラーが出た場合は、
オプション --no-check-certificate をつければOK


リアルタイムクロックを設定する

hwclock コマンドで システムクロックの日時情報をリアルタイムクロックに反映させる。

sudo hwclock --systohc


systohcでリアルタイムクロックが書き換わらない場合

ハードウェアクロックのデバイスファイルに直接書き込む

ls /dev/rtc* #rtcのデバイスファイルを探す
sudo hwclock -w -f /dev/rtc0 #すべてのrtcデバイスファイルにシステムクロック情報を書き込む


以上。