LoginSignup
9
8

More than 1 year has passed since last update.

[Linux/Ubuntu] ntpを使わずに時刻合わせ(Proxy環境下でもOK)

Last updated at Posted at 2022-04-14

どうして…

これからどうするの?

  • なぜ使えなくなったかというと、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
9
8
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
9
8