ubuntuの時間について

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,387

mint.cherry

score 278

ubuntu15.10を使用しています。

ntpの設定で日本のサーバーを選んでもUTCになると前の質問で教えていただきました。
予想ですが私が選んだその日本のサーバーもUTCの時刻を配布していると思います。
ログを見ても確かに9時間ずれていてUTCと表示されていました。

dateコマンドを打つと日本時間のJSTと書いてあります。
これはbiosレベルの時刻をとってきていて、時刻がJSTと近いからJSTと表示しています。(検証しました。)

質問
1.どこかのサーバーでUTCではなくJSTを配布しているサーバーはないのでしょうか?
2.何かのサービスで時刻を参照するようなときはBIOSの時刻かNTPの時刻どっちをとってきているのでしょうか?例えばmysqlなどのテーブルに時間を書き込むときの時間の参照先がbios時刻なのかntp時刻なのか。
3.ntpとbiosの時刻が互いにUTCとJSTですがなにか問題は起きないのでしょうか?

よろしくお願いしますm(__)m

追記==================================================
ubuntuはデフォルトでshutdown時に自動的にUTCの時刻がbiosに上書きされている設定は直していますm(__)m
/etc/default/rcSの一部です

#assume that the bios clock is set to UTC time (recommended)
UTC=no
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+3

世界の中心はイギリスのロンドンにあるグリニッジ天文台です。
その時計(太陽が真南に来た時に正午)のうるう秒等の修正を加えたものがUTCです。
UTC協定世界時と呼ばれ、全世界の中心の時刻と定義されています。

日本の中心は兵庫県にある明石市立天文科学館です。
「JSTM」(Japan Standard Time Meridian=日本標準時子午線)と表示された時計塔があります。
何故なら、明石市立天文科学館が東経135度にあり、ロンドンのグリニッジ天文台から丁度9時間進んでいるからです。
それが転じてUTCに対応する日本時間はJSTです

Wikipediaの日本標準時参考


さて、ここからLinuxのOSの話に入ります。
Linuxでは設定ファイルにお前の時計何処基準よ?を記載します。

Ubuntuでは/usr/share/zoneinfo/Asia/Tokyoファイルを/etc/localtimeにコピーします。
http://oswald.hatenablog.com/entry/2014/01/27/195427

これで、このパソコンは日本の時刻(JST)を使う事が確定します。
なんでそんな設定するねんという話ですが、

全てのマシンはJSTがUTC+9時間という事を知っているからです。
UTCさえ分かればJSTを何時でも求める事が可能です。
dateコマンド打ってJSTが表示されるのは、人間様の都合で「俺日本人だからUTCで出されても困るんだよ、だからJSTで表示してねお願い」と言ってるだけの話です。


1. どこかのサーバーでUTCではなくJSTを配布しているサーバーはないのでしょうか?

UTCのみ
Wikipediaで「NTPプロトコル上では協定世界時 (UTC) を使って時刻を送受信する。」と定義されているので基本的に例外はなし

2. 何かのサービスで時刻を参照するようなときはBIOSの時刻かNTPの時刻どっちをとってきているのでしょうか?例えばmysqlなどのテーブルに時間を書き込むときの時間の参照先がbios時刻なのかntp時刻なのか。

NTPの時刻?
マシンが持ってる時刻はBIOSの時刻の1個のみで、パソコンに内蔵されている時計は基本的に品質が悪く数秒のズレがすぐに発生してしまいます。
なので、定期的に品質の高い時計積んだサーバー(所謂NTPサーバー)に今何時?と問い合わせ教えてもらっているだけです。

3. ntpとbiosの時刻が互いにUTCとJSTですがなにか問題は起きないのでしょうか?

NTPサーバーとの通信内容は以下のようになります。

ローカルマシン「ちょっとNTP鯖さん、正しい時刻知りたいから今の時刻教えてくれ。」
NTP鯖「ええと…UTCで2016/02/24 10:52:30だね。」
ローカルマシン「なるほどなるほど、俺のマシンJSTだから9時間プラスして2016/02/24 19:52:30で登録しとくわ、ありがと!」

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/24 20:34

    みやびさん回答ありがとうございます!非常に丁寧でわかりやすかったです。解決できてたすかりました。
    ntpの規定としてutcのみなんですね。(昔教えてくれてもらったのに、すっかり忘れていたことは内緒です(笑))
    UTCとってきたのを+9時間というのは少し思ってはいましたが自信が持てました。ありがとうございます!
    (私の考えてたことはそもそもJSTをとってくれるプロトコルがないものかと考えていました。)

    3に関しては、すこし難しいところはありますが頑張ってみます!!
    ありがとうございましたm(__)m

    キャンセル

  • 2016/02/24 20:41

    他のお二人の答えもシンプルで美しいと思いますが、
    わざわざBAにしていただきありがとうございます。

    NTP鯖のUTCの下りは回答当初知らずに速攻調べて修正したのは内緒です。
    良い勉強出来ました、ありがとうございます。

    キャンセル

+3

1.どこかのサーバーでUTCではなくJSTを配布しているサーバーはないのでしょうか? 

ないと思います。プロトコルの仕様としてUTCを使うことになっていますから。

2.何かのサービスで時刻を参照するようなときはBIOSの時刻かNTPの時刻どっちをとってきているのでしょうか?

NTPによる時刻同期を行う設定にしている場合はNTPからの情報を使い、そうでない場合はRTC(BIOSの時刻)の情報を使います。NTPを使う設定でもネットにつながっていない場合やNTPサーバーから正しく情報が取得できない場合は、RTCの情報を使います。そのため、NTPで時刻合わせをした結果を適当なタイミングでRTCにも反映させます。

ただし、NTPもRTCも秒単位でしか時刻を取得できないので、実際に使用する時刻は高精度のタイマーICを使ってカウントしています。そして、時刻取得APIなどで時刻を取得する際はその値を返しています。

3.ntpとbiosの時刻が互いにUTCとJSTですなにか問題は起きないのでしょうか? 

OSはRTCがローカルタイムということを知っているので、OSの設定でタイムゾーンを正しく設定していれば問題ありません(OSインストール時に設定を促される場合もあります)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/25 10:37 編集

    回答ありがとうございます。
    NTPはもうUTCになっているという決まりなのですね。
    BIOSの時刻はのことをRTCと呼ぶのははじめてしりました勉強になりますm(__)m
    優先順位と言っていいのかわかりませんが、
    ネットにつながっていなかったらRTCから表示する。
    ネットにつながっているならNTPでUTCをとってきて本体のtimezoneにより+9時間されて表示される。
    という解釈していますm(__)m

    キャンセル

+1

うーん。
まずntpはUTC(協定標準時)を扱います。JSTなんぞない。
でクライアント(PCなど)の内部の時刻をこれを用いて補正します。
この補正はそこまで頻繁に行う必要はなく、例えばWindowsでは一週間ごとにntpを使って時刻補正をするようになっています。

なのでJSTを返すntpサーバーがあったらそのサーバーは信用出来ないです。だって9時間もずれてるんでしょ、どんだけ狂ってるのさ、その時計。

>どこかのサーバーでUTCではなくJSTを配布しているサーバーはないのでしょうか?

しらず。自分で作ればいいんじゃない?

>何かのサービスで時刻を参照するようなときはBIOSの時刻かNTPの時刻どっちをとってきているのでしょうか

サービスによる。さっきも言ったとおり、そんなに頻繁にntpサーバーと通信するものではない、一般的には。

>例えばmysqlなどのテーブルに時間を書き込むときの時間の参照先がbios時刻なのかntp時刻なのか。 

知らん。
http://kanonji.info/blog/2014/07/29/サーバーがUTCなのでMySQLのタイムゾーンが気になって
これ見る感じはサーバーごとじゃない?

>ntpとbiosの時刻が互いにUTCとJSTですがなにか問題は起きないのでしょうか? 

特には。JSTを吐くような糞ntpサーバと通信したらクライアントの時計も狂うけど、BIOSの時計まで書き換わるかはOSやソフトの実装次第。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/25 10:51

    回答ありがとうございます。
    > JSTを返すntpサーバーがあったらそのサーバーは信用出来ない
    私の中ではUTCをとってきていて本体のほうで+9時間されているということは、思ってはいましたが、勝手ながらないだろうと思っていましたm(__)m汗)普通はそのような感じになるのですね。
    1の質問に関して本体のほうで+9時間されているのを確信を持ち今では恥ずかしい質問です…

    教えていただきありがとうございます!勉強になりましたm(__)m

    キャンセル

  • 2016/02/26 01:00

    昔Win32apiを使ってNTPから時刻取ってくるプログラムを書いたことがあるので貼っておきますね(昔書いたコードとか汚すぎて私は読む気にならないんですが)
    https://github.com/yumetodo/NTP_timer/blob/master/NTP_timer/NTP_timer_kai.cpp
    ToLocalStruct_tm関数が時差補正してます。gmtime_sとlocaltime_sの差分=時差として補正しています。
    今ならboost::asioとstd::chrono使ってもうすこしまともなプログラム書くんだろうけど当時は知らなかったもんで、ものすごく汚い。

    キャンセル

-2

きみは「時点」とその表現方法について理解してないね。
なんかの書籍で読んだ例だが、昼過ぎに日本からアメリカに電話したらこっちは深夜だと怒られたという。なんと電話はタイムマシーンで過去の深夜にかけてしまったというのか。すごい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/24 19:32

    回答ありがとうございます。
    地球の時差については常識の範囲として省略していました。地理的なはなしになりますね。
    すいませんm(__)m

    それはすごいですね(笑)

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる