Linux rdate: 時刻サーバーを確認してシステムクロックを設定する
rdateは、リモートの時刻サーバーから時刻を取得して確認したり、システムクロックを一度調整したりするコマンドです。ただし、同じ名前の実装でもオプションの意味が異なるため、最初にインストールされているプログラムのマニュアルを確認する必要があります。継続的な時刻同期には、chronyのような時刻同期サービスを使用する方が良いです。
rdateと時刻同期の違い
rdate は、実行時にリモートサーバーにリクエストを送信するツールです。一度クロックを設定しても、偏差を修正するためにコマンド自体は継続的に実行されません。ログ、スケジュールされたタスク、証明書の確認など、時間に敏感なサービスを運用する場合は、継続的な同期の状態を確認する必要があります。
以下の例では、Ubuntu 24.04 の rdate マニュアルに記載されている OpenRdate を使用しています。他の実装では同じオプションでも意味が異なる場合があるため、これらの例をそのまま適用しないでください。
インストールと実装の確認
Ubuntuでは、パッケージリポジトリにアクセスできる場合、以下の手順でインストールしてください。パッケージが見つからないと表示された場合は、ディストリビューションのバージョンと使用しているリポジトリを確認してください。
sudo apt update
sudo apt install rdate
インストール後、実際のプログラムのオプションを確認するためにマニュアルを開いてください。マニュアルでの終了キーはqです。
command -v rdate
man rdate
OpenRdateでは、-pは時計を変更せずにサーバーの時間を出力することを意味し、-sは出力しないことを意味します。その他のrdate実装では、-sは時計を設定することを意味する場合があります。したがって、オプション名だけで動作を推測しないでください。特にOpenRdateでは、-pなしで実行すると時計を設定しようとする場合があります。
サーバー時間のみ確認
OpenRdateのデフォルトの通信方法は、RFC 868時間プロトコルのTCPポート37です。通常のNTP(ネットワーク時間プロトコル)サーバーがRFC 868も提供しているとは限りません。以下の例では、OpenRdateの-nオプションとシンプルネットワークタイムプロトコル(SNTP)を使用して、ドイツのPhysikalisch-Technische Bundesanstalt(PTB)のNTPサーバーに問い合わせています。サーバーの利用規約やネットワークへのアクセス可否を確認し、必要に応じて、組織で指定されたNTPサーバーに置き換えてください。
rdate -n -p ptbtime1.ptb.de
通常の応答が受信されると、リモート時刻が表示され、ローカルシステムクロックは変更されません。SNTPはUDPポート123を使用します。 OpenRdateのマニュアルによると、NTPサーバーの利用時にはうるう秒の補正が必要な場合があります。正確な時刻が重要な場合は、マニュアルの-cオプションと時刻ソースの条件を確認してください。応答がない場合は、サーバーアドレス、DNS、ファイアウォール、およびサーバーのサービスが稼働しているかを確認してください。サーバーが実際にサポートしているプロトコルを最初に確認する必要があります。タイムサーバーと名付けられていても、すべてのプロトコルをサポートしているわけではありません。
クロックを調整する前に確認してください
システム時間が突然前後にずれると、ログの順序、スケジュールされたタスク、認証、および実行中のサービスに影響を与える可能性があります。運用中のシステムでは、時間ソースの信頼性と変更の影響を確認し、変更に適切な時間を確保してください。また、chronyや他の同期サービスによってすでに管理されている時計を繰り返し変更しないよう、現在の運用ポリシーを確認してください。
OpenRdateでは、次のコマンドは-pなしでSNTPサーバーの時刻にシステム時計を設定しようとします。管理者権限が必要であり、実行前に上記のクエリコマンドを使用してサーバーの応答と現在の時間を確認してください。この例はOpenRdate用です。
date
timedatectl
sudo rdate -n ptbtime1.ptb.de
date
timedatectl
コマンドが失敗した場合は、エラーを確認し、成功したと仮定しないでください。dateおよびtimedatectlは、ローカル時間とタイムゾーンを確認するのに役立ちます。画面に表示されるタイムゾーンが異なるからといって、必ずしも時計の基準時間が間違っているわけではありません。時間の変更はクエリのように簡単に元に戻せないため、以前の値に盲目的にリセットするのではなく、運用手順に従って信頼できる時刻ソースと同期してください。
継続的な同期を確認する
rdateを一度実行するだけでは、継続的な同期は構成されません。systemd環境では、次のコマンドで同期サービスと時計の状態を確認できます。
timedatectl status
NTP service がアクティブとして表示され、System clock synchronized が同期済みとして表示される場合、それらは異なるステータスです。サービスが稼働していても、サーバーに到達できない場合は同期されないことがあります。表示される項目はシステムやバージョンによって異なる場合があります。
chrony を使用しているシステムでは、chronyc tracking および chronyc sources -v でステータスや時刻ソースを確認できます。コマンドを使用できない場合は、インストール、サービスのステータス、およびディストリビューションの設定を確認してください。 Red Hat の chrony 時刻同期ドキュメント では、ソースや同期ステータスの確認方法を確認できます。




