どうして…
- ある日、システムクロックがずれていることに気付きました。
- それは、今まで大変お世話になっていた以下のやり方が使えなくなったからでした。
これからどうするの?
- なぜ使えなくなったかというと、NICTがhttp/httpsを利用した時刻配信サービスを終了したためです。
- ということは、別の場所から時刻情報を引っ張ってこられれば、継続してこの方法は使えるわけです。
- 解決策では、次のページの情報を参考にしました。
解決策
- 以下のコマンドで時刻を合わせることができます。
sudo date --set "$(wget -q http://worldtimeapi.org/api/timezone/Asia/Tokyo.txt -O - | grep ^datetime | cut -d " " -f 2)"
- cronを利用して、起動時と毎日5時に時刻合わせする方法について解説します。
- まず、時刻合わせにはroot権限が必要なので、一般ユーザーのcronに登録しても期待通りに動いてくれません。
- したがって、
$ sudo crontab -e
とコマンド入力し、rootのcrontabにコマンドを登録します。 - 登録内容は以下の通りです。
crontab
# 起動時に時刻合わせ
@reboot sleep 20s && date --set "$(wget -q http://worldtimeapi.org/api/timezone/Asia/Tokyo.txt -O - | grep ^datetime | cut -d " " -f 2)"
# 毎日5時に時刻合わせ
00 5 * * * date --set "$(wget -q http://worldtimeapi.org/api/timezone/Asia/Tokyo.txt -O - | grep ^datetime | cut -d " " -f 2)"
- 起動時(
@reboot
)にsleep 20s
が必要な理由は、ネットワークサービスが起動する前にcronサービスが起動してしまうからです。(スリープする時間は調整してください。)
参考:各分割コマンドの実行結果
$ wget -q http://worldtimeapi.org/api/timezone/Asia/Tokyo.txt -O -
abbreviation: JST
client_ip: 2001:cf8:0:6c::201
datetime: 2022-04-14T13:16:13.643268+09:00
day_of_week: 4
day_of_year: 104
dst: false
dst_from:
dst_offset: 0
dst_until:
raw_offset: 32400
timezone: Asia/Tokyo
unixtime: 1649909773
utc_datetime: 2022-04-14T04:16:13.643268+00:00
utc_offset: +09:00
week_number: 15
$ wget -q http://worldtimeapi.org/api/timezone/Asia/Tokyo.txt -O - | grep ^datetime
datetime: 2022-04-14T13:16:13.643268+09:00
$ wget -q http://worldtimeapi.org/api/timezone/Asia/Tokyo.txt -O - | grep ^datetime | cut -d " " -f 2
2022-04-14T13:19:07.760507+09:00