前書き

正確な計時は、最新のソフトウェア展開の重要なコンポーネントになっています。 ログが正しい順序で記録されているか、データベースの更新が正しく適用されているかどうかにかかわらず、非同期時間はエラー、データ破損、その他のデバッグが難しい問題を引き起こす可能性があります。

Ubuntu 16.04には組み込みの時刻同期があり、systemdのtimesyncdサービスを使用してデフォルトでアクティブになっています。 この記事では、いくつかの基本的な時間関連コマンドを調べ、timesyncdがアクティブであることを確認し、代替ネットワークタイムサービスをインストールする方法を学習します。

前提条件

このチュートリアルを開始する前に、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu- 16-04 [このUbuntu 16.04サーバーセットアップチュートリアル]。

基本時間コマンドのナビゲート

サーバーの時間を調べるための最も基本的なコマンドは、「+ date +」です。 すべてのユーザーがこのコマンドを入力して、日付と時刻を出力できます。

date
OutputWed Apr 26 17:44:38  2017

ほとんどの場合、上記の出力で強調表示されているように、サーバーはデフォルトで_UTC_タイムゾーンになります。 UTCは協定世界時、経度0度の時刻です。 一貫して世界時を使用すると、インフラストラクチャが複数のタイムゾーンにまたがる場合の混乱が軽減されます。

異なる要件があり、タイムゾーンを変更する必要がある場合は、 `+ timedatectl`コマンドを使用して変更できます。

まず、利用可能なタイムゾーンを一覧表示します。

timedatectl list-timezones

タイムゾーンのリストが画面に印刷されます。 「+ SPACE」キーを押してページダウンし、「+ b 」キーを押してページアップできます。 正しいタイムゾーンを見つけたら、それを書き留めてから「 q +」と入力してリストを終了します。

次に、「+ timedatectl set-timezone 」でタイムゾーンを設定し、下で強調表示されている部分をリストで見つけたタイムゾーンに置き換えてください。 この変更を行うには、「 timedatectl 」とともに「 sudo +」を使用する必要があります。

sudo timedatectl set-timezone

変更を確認するには、 `+ date +`を再度実行します。

date
OutputWed Apr 26 13:55:45  2017

タイムゾーンの略語は、新しく選択した値を反映する必要があります。

時計の確認方法とタイムゾーンの設定方法がわかったので、時刻が正しく同期されていることを確認しましょう。

timedatectlによるtimesyncdの制御

最近まで、ほとんどのネットワーク時刻同期は、_Network Time Protocolデーモン_またはntpdによって処理されていました。 このサーバーは、他のNTPサーバーのプールに接続して、一定の正確な時刻更新を提供します。

Ubuntuのデフォルトのインストールでは、ntpdではなくtimesyncdが使用されるようになりました。 timesyncdは同じタイムサーバーに接続し、ほぼ同じ方法で動作しますが、より軽量で、systemdおよびUbuntuの低レベルの動作とより統合されています。

引数なしで `+ timedatectl `を実行することで、timesyncdのステータスをクエリできます。 この場合、 ` sudo +`を使用する必要はありません。

timedatectl
OutputLocal time: Wed 2017-04-26 17:20:07 UTC
 Universal time: Wed 2017-04-26 17:20:07 UTC
       RTC time: Wed 2017-04-26 17:20:07
      Time zone: Etc/UTC (UTC, +0000)


RTC in local TZ: no

これにより、現地時間、世界時(UTCタイムゾーンから切り替えていない場合は現地時間と同じ場合があります)、およびネットワーク時間のステータス情報が出力されます。 `+ Network time on:yes `はtimesyncdが有効になっていることを意味し、 ` NTP synchronized:yes +`は時刻が正常に同期されたことを示します。

timesyncdが有効になっていない場合は、timedatectlで有効にします:

sudo timedatectl set-ntp on

ネットワーク時間のステータスを確認するには、 `+ timedatectl `を再度実行します。 実際の同期が行われるまでに1分かかる場合がありますが、最終的には「 Network time on:」と「 NTP synchronized:」の両方が「 yes +」と表示されるはずです。

ntpdへの切り替え

timesyncdはほとんどの目的に適していますが、時間のわずかな変動にも非常に敏感な一部のアプリケーションは、ntpdのほうがより適切に機能する場合があります。

ntpdをインストールする前に、timesyncdをオフにする必要があります。

sudo timedatectl set-ntp no

timesyncdがオフになっていることを確認します。

timedatectl

出力で + Network time on:no +`を探します。 これは、「+ timesyncd +」が停止したことを意味します。 `+ apt-get`で + ntp`パッケージをインストールできます:

sudo apt-get install ntp

ntpdはインストール後に自動的に開始されます。 ステータス情報についてntpdを照会して、すべてが機能していることを確認できます。

sudo ntpq -p
Outputremote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
-makaki.miuku.ne 210.23.25.77     2 u   45   64    3  248.007   -0.489   1.137
-69.10.161.7     144.111.222.81   3 u   43   64    3   90.551    4.316   0.550
+static-ip-85-25 130.149.17.21    2 u   42   64    3   80.044   -2.829   0.900
+zepto.mcl.gg    192.53.103.108   2 u   40   64    3   83.331   -0.385   0.391

`+ ntpq `はntpdのクエリツールです。 ` -p +`フラグは、ntpdが接続しているNTPサーバー(または p eers)に関する情報を要求します。 出力は若干異なりますが、デフォルトのUbuntuプールサーバーとその他のサーバーが表示されます。 ntpdが接続を確立するのに数分かかる場合があることに注意してください。

結論

この記事では、システム時刻の表示、タイムゾーンの変更、Ubuntuのデフォルトのtimesyncdの操作、およびntpdのインストール方法を示しました。 ここで説明したよりも高度な計時ニーズがある場合は、https://www.eecis.udel.edu/%7Emills/ntp/html/index.html [公式NTPドキュメント]を参照し、 NTP Pool Projectをご覧ください。世界のNTPインフラストラクチャの多くを提供しているボランティアのグローバルグループです。