前書き

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

Debian 10には、 `+ ntp +`パッケージで提供される標準のntpdタイムサーバーを使用して、デフォルトで時刻同期が組み込まれ、アクティブ化されています。 この記事では、基本的な時間関連のコマンドをいくつか見て、ntpdがアクティブでピアに接続されていることを確認し、代替のsystemd-timesyncdネットワークタイムサービスをアクティブにする方法を学習します。

前提条件

このチュートリアルを開始する前に、https://www.digitalocean.com/community/tutorials/initial-server-setup-withで説明されているように、ルートではない「+ sudo +」が有効なユーザーを持つDebian 10サーバーが必要になります。 -debian-10 [このDebian 10サーバーセットアップチュートリアル]。

手順1-基本的な時間コマンドの操作

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

date
OutputWed 31 Jul 2019 06:03:19 PM

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

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

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

timedatectl list-timezones

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

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

sudo timedatectl set-timezone

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

date
OutputWed 31 Jul 2019 02:08:43 PM

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

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

手順2-ntpdのステータスの確認

デフォルトでは、Debian 10は標準のntpdサーバーを実行して、システム時間を外部タイムサーバーのプールと同期させます。 `+ systemctl +`コマンドで実行されていることを確認できます:

sudo systemctl status ntp
Output● ntp.service - Network Time Service
  Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
  Active:  since Wed 2019-07-31 13:57:08 EDT; 17min ago
    Docs: man:ntpd(8)
Main PID: 429 (ntpd)
   Tasks: 2 (limit: 1168)
  Memory: 2.1M
  CGroup: /system.slice/ntp.service
          └─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .

`+ active(running)`ステータスは、ntpdが正常に起動したことを示します。 ntpdのステータスに関する詳細を取得するには、 ` ntpq +`コマンドを使用できます。

ntpq -p
Output     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
+208.67.72.50    152.2.133.55     2 u   12   64  377   39.381    1.696   0.674
+198.46.223.227  204.9.54.119     2 u    6   64  377   22.671    3.536   1.818
-zinc.frizzen.ne 108.61.56.35     3 u   43   64  377   12.012    1.268   2.553
-pyramid.latt.ne 204.123.2.72     2 u   11   64  377   69.922    2.858   0.604
+nu.binary.net   128.252.19.1     2 u   10   64  377   35.362    3.148   0.587
#107.155.79.108  129.7.1.66       2 u   65   64  377   42.380    1.638   1.014
+t1.time.bf1.yah 98.139.133.62    2 u    6   64  377   11.233    3.305   1.118
*sombrero.spider 129.6.15.30      2 u   47   64  377    1.304    2.941   0.889
+hydrogen.consta 209.51.161.238   2 u   45   64  377    1.830    2.280   1.026
-4.53.160.75     142.66.101.13    2 u   42   64  377   29.077    2.997   0.789
#horp-bsd01.horp 146.186.222.14   2 u   39   64  377   16.165    4.189   0.717
-ntpool1.603.new 204.9.54.119     2 u   46   64  377   27.914    3.717   0.939

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

ステップ3-systemd-timesyncdへの切り替え

systemdの組み込み* timesyncd *コンポーネントを使用して、ntpdを置き換えることができます。 timesyncdは、systemdとより統合されたntpdの軽量の代替です。 ただし、タイムサーバーとしての実行はサポートされておらず、システム時刻の同期を維持するために使用する手法はやや洗練されていないことに注意してください。 複雑なリアルタイム分散システムを実行している場合、ntpdに固執することをお勧めします。

timesyncdを使用するには、まずntpdをアンインストールする必要があります。

sudo apt purge ntp

次に、timesyncdサービスを開始します。

sudo systemctl start systemd-timesyncd

最後に、サービスのステータスをチェックして、実行されていることを確認します。

sudo systemctl status systemd-timesyncd
Output● systemd-timesyncd.service - Network Time Synchronization
  Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
 Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
          └─disable-with-time-daemon.conf
  Active:  since Wed 2019-07-31 14:21:37 EDT; 6s ago
    Docs: man:systemd-timesyncd.service(8)
Main PID: 1681 (systemd-timesyn)
  Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
   Tasks: 2 (limit: 1168)
  Memory: 1.3M
  CGroup: /system.slice/systemd-timesyncd.service
          └─1681 /lib/systemd/systemd-timesyncd

`+ timedatectl +`を使用して、systemdの現在の時間の理解を出力できます。

timedatectl
Output               Local time: Wed 2019-07-31 14:22:15 EDT
          Universal time: Wed 2019-07-31 18:22:15 UTC
                RTC time: n/a
               Time zone: America/New_York (EDT, -0400)


         RTC in local TZ: no

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

結論

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