1. ホーム
  2. オペレーティングシステム
  3. ユニックス/BSD

freebsd 時間設定サブセクション詳細

2022-01-19 23:36:30

日付を使って時刻を表示し、実際に時刻を変更することができます(例:# 日付 9903011354

1999年3月1日(月)13:54:00(中央標準時)です。

しかし、これでは正しさが犠牲になることもあり、より良いツールはntpdateを使用してネットワークと同期させることです。

例えば # ntpdate clepsydra.dec.com

10 Apr 19:26:49 ntpdate: step time server 204.123.2.5 offset 517.837146. 以下は、その参照ファイルです。

ネットワークオペレーティングシステムの場合、複数のクライアントにサービスを提供するため、正確なシステム時刻を持つことが重要です。現在の時刻を表示するには、date コマンドを使用します: $ date

土曜日、1999年4月10日18時51分39秒CST

  dateコマンドは、環境変数LC_ALLにzh_CN.EUCを指定した場合のみ中国語で出力されますが、これはローカライズのために使う標準的な方法です。

   インターネット上のネットワークOSのクライアントは世界各地から来る可能性があるため、時刻システムは異なるタイムゾーンを識別できなければならない。コンピュータのCMOS時刻は、CMOS時刻をグリニッジ標準時に設定し、タイムゾーン補正でローカルタイムゾーンの正しい時刻を出す方法と、CMOS時刻をローカルタイムゾーン時刻に設定し、ローカルタイムゾーン補正でグリニッジ標準時を出す方法の2種類がある。これにより、他のコンピューターと通信する際に、異なるタイムゾーンのコンピューターとの時刻の差を避け、標準時を使用することができます。

  タイムゾーンを設定する場合、システムのインストーラーがどの時刻設定方法とタイムゾーン設定を使用するかをユーザーに尋ねますが、システムのインストール後にtzsetupコマンドを使用してタイムゾーン情報を直接設定することも可能です。すべてのタイムゾーン情報は/usr/share/zoneinfoディレクトリに、ローカルタイムゾーン情報は/etc/localtimeファイルに保存されます。また、各ユーザーは環境変数TZを使用してシステムとは異なるタイムゾーンを設定することができ、この設定はシステムの設定より優先されます。

  rootユーザーは、dateパラメータを使用して、システム時刻を変更することができます。例えば、次のコマンドは、時刻を1999年3月1日午後1時54分に設定します。

# 日付 9903011354

1999年3月1日(月)13:54:00(中央標準時

  時刻の書式が年、月、日、時、分、それぞれ2桁ずつで、yymmddhhmmという形になっていることがわかりますが、これはほとんどの場合、時刻の微調整で、年、月、日の前の部分を省略し、時、分はhhmmという形で4桁だけでいいのです。

<フォント インターネットで時刻を同期させる

  手動で時刻を設定するのは不便ですし、ローカル管理者の時計が正しいかどうかにも左右されます。そうすると、ネットワーク上の異なる管理者が管理するコンピューターの時刻にズレが生じ、時刻同期を必要とする一部のサービスに影響を与えることになる。この問題の解決方法は簡単で、正確な時刻を提供できるサーバーに接続して時刻同期を行うことです。

ntpは、TCP/IPプロトコルの時刻同期に使われるプロトコルで、インターネット上でntpサービスを提供しているサイトには、clepsydra.dec.com, ben.cs. wisc.edu, truechimer.waikato.ac.nz などのサイトがあります。ntpプロトコル自体はネットワークの遅延を考慮していますが、ネットワークの遅延は結局のところ時刻の正確さに影響を与えるので、ローカルコンピュータに最も近いタイムサーバーを選択する必要があります。

  また、/stand/sysinstallを使用して時刻同期を設定すると、地理的な条件に基づいて適切なタイムサーバーを選択できますが、ネットワーク接続が常に地理的に一致するとは限らないため、地理的な近さだけを考慮してタイムサーバーを選択することはできません。

  ntpプロトコルを使用して自分のコンピュータの時刻を更新する簡単なアプリケーションはntpdateで、これもroot権限が必要です。

# ntpdate clepsydra.dec.com

10 Apr 19:26:49 ntpdate: ステップタイムサーバ 204.123.2.5 offset 517.837146

   ntpdateが実行され、終了します。時刻を正しく保つためには、たまに自動で時刻を同期させる必要があるので、cronにntpdateを入れて、たまに実行すればよい。しかし、システムにはもう一つxntpdというデーモンが用意されており、定期的に時刻を自動同期することができるので、インターネットに常時接続しているコンピュータにはこちらの方が向いています。xntpdデーモンを実行するには、まず/etc/ntp.confファイルを作成し、タイムサーバーの名前と一時ファイル名を記述する必要があります。

サーバ clepsydra.dec.com

ドリフトファイル /etc/ntp.drift

  次に、時刻同期のためにこのデーモンを実行する必要があります。

# xntpd -c /etc/ntp.conf -p /var/run/xntpd.pid

  cパラメータは設定ファイルとしてntp.confを指定し、xntpd.pidはxntpdのプロセス識別番号を記録するために使用します。ntpdateとxntpdは、rc.confのオプションを変更することにより、起動時に両方とも自動的に実行することができます。

xntpd_enable="YES" # xntpd Network Time Protocolを実行します(またはNO)。

xntpd_program="xntpd" # xntpdへのパス。

xntpd_flags="-c /etc/ntp.conf -p /var/run/xntpd.pid" # xntpdへのフラグ(有効な場合)です。

   各コンピュータを外部のタイムサーバに接続する方法は、ローカルネットワーク上の複数のコンピュータをすべて時刻同期させたい場合には、あまり良い方法とは言えません。xntpdはこの目的のために設計されており、時間を提供するntpサーバーとして使用することができます。タイムサーバーとして使用するxntpdの設定ファイルは、以下のようにします。

サーバ clepsydra.dec.com

ドリフトファイル /etc/ntp.drift

ブロードキャスト 192.168.1.255

   LAN上の他のコンピュータに定期的に正しい時刻をブロードキャストするために、192.168.1.255のブロードキャストアドレスが追加されました。このブロードキャストアドレスは、ユーザーのネットワークに合わせて変更することもできますし、ユーザーのネットワークがマルチキャスト機能をサポートしていれば、NTPプロトコルに対応したマルチキャストD URL 224.0.1.1を使用することも可能です。ブロードキャストやマルチキャストが使われているので、ネットワーク上の他のコンピュータはntp.confを設定しなくてもxntpdを起動でき、xntpdはサーバーのブロードキャストメッセージを聞いて正確な時間を知ることができるようになります。もちろん、ブロードキャストアドレスを設定せずに、各コンピュータのntp.confファイルを設定し、すべてのコンピュータがタイムサーバにアクセスするように指定することも可能です。