時計をタイムサーバーと同期するようにUbuntuを設定する方法は?


23

Ubuntuが起動時にシステムクロックをタイムサーバーと自動的に同期するようにします。

ただし、PCはログインするまでインターネットに接続されません(プラス5〜10秒)。

これを行うにはどうすれば設定できますか?


2
ntpdをインストールして、コンピューターがインターネットタイムサーバーと継続的に同期するようにする方法を説明する優れた回答が既にありますが、デフォルトでは、Ubuntuはネットワークインターフェイスが来るたびにntp.ubuntu.comと時刻を同期します「アップ」(たとえば、コンピュータを起動したとき)。インターネットへの接続方法が原因で、これはあなたのケースでは発生していないようですが、他の読者は、Ubuntuがntpdがインストールされていないと時刻を同期しないと想定しないでください。

time.nist.govに設定する方法を説明するものを次に示します。askubuntu.com
questions

回答:


32

これはNTPで行われ、そのための指示が利用可能です。基本的に、NTPデーモンをインストールする必要があります。いくつかの選択肢があるようですが、「標準」の選択肢はパッケージに含まれていますntp。リンク先ページの指示に従って、

sudo apt-get install ntp

UbuntuのNTPサーバーと同期するようにすべてが設定されます。

編集:「起動時」を逃しました。通常、ntpdを使用してシステムとサーバー間の継続的な同期を取得することをお勧めしますが、本当に一度だけ同期したい場合は、mfischの答えが探しているようです。


3
一般に、彼は常にntpdを常に実行していて、オンラインではないときに接続に失敗する方が良いと思います。これは決して有害ではありません。とはいえ、私の方法も機能するはずです;)
mfisch

継続的に実行しても問題ありません。
ネイサンオスマン

1
ジョージ、それをしてください。世界で最も厄介なことは、このような質問をし、すべての回答を「なぜあなたはそれをしたいのか」とすることなので、私はあなたの「本当の」質問に答えることを望んでいました。
mfisch

Ubuntu 18.04の場合、ntpdをインストールするためのアドバイスが適用されます。デフォルトでは、systemd-timesyncd.serviceは時刻を同期します。
ernstkl

9

「システム」->「管理」->「時刻と日付」に移動すると、GUIが表示され、日付/時刻を設定できます。

タイムサーバーを使用するためのオプションが提供されます。確認してNTPがインストールされていない場合、インストールするかどうかを尋ねられます。「はい」をクリックして、その仕事をさせてください:)


「スタートアップ」のことを忘れました。NTPは、あなたがいることをどの手段、定期的に仕事をしなければならないあなたがオンラインであるときは常に同期します...しかし、ことを確認する唯一の方法は、mfischによって提供されるスクリプトのいくつかの種類を使用することです。正直に言うと、一度同期すると、お使いのコンピューターの時計が台無しになる可能性はほとんどありません。したがって、デフォルトの時刻同期を使用し、それをバックグラウンドで実行できるようにすると、ほとんど何もせずにほとんどの時間を実行できるようになります。
リトルジャワ

「時刻と日付」というラベルが付いていませんか?
ファイヤーフェザー

@Firefeather:そうかもしれません。私は英語のインターフェースを持っていないので、私は言うことができません;)
リトルジャワ

ああ、私を馬鹿にして、国際化を忘れてしまった。私のen-usシステムは「時間と日付」というラベルを付けています。
ファイアフェザー

6

これは、atおよびntpdateを使用して実行できます。atはおそらく既にインストールされていますが、ntpdateはインストールされていない可能性があります。(apt-get install ntpdate)。

最初にntpdateを実行する小さなスクリプトを作成し、update_time.shと呼びます。

#!/bin/bash
ntpdate pool.ntp.org

.bash_loginファイル(作成する必要がある場合があります)に以下を追加します。

at -f ~/update_time.sh now + 1 minute

それはあなたが望むことをする必要があります。使用の遅延を5分、10分などに変更できます。

編集:私はちょうどあなたが実行するためにルートである必要があることに気づいたntpdate。前述のupdate_time.shスクリプトにSUIDビットを設定する必要があります。これをコマンドから実行することで実行できます(一度だけ実行する必要があります):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

1
iirc .shスクリプトにはsuidを設定できません。
ブラム

ntpdateでsuidを直接することはできますか?それはおそらく同じことを達成するでしょう。
mfisch

2
なぜ使用at?そして、あなたが自動的に実行するつもりならntpdate、なぜntpサービスをインストールしないのですか?
Reinierポスト14

1
注:ntpdateはUbuntu(16.04以降)にデフォルトでインストールされなくなり、timedatectlを支持して廃止されました。timedatectlはsystemdのtimesyncdサービスを制御します。これはデフォルトで時刻同期に使用されます。
コーリーゴールドバーグ

0

Ubuntu 16.04以降、timedatectl / timesyncd(systemdの一部)は、ntpdate / ntpの大部分を置き換えます。時刻同期を参照してください。

次を使用して時刻同期をアクティブにする必要がある場合があります。

$ sudo timedatectl set-ntp on

chronyを使用する場合:

  • ワンショット同期を使用する必要がある場合: $ chronyd -q

  • 時間を設定せずにワンショットの時間チェックが必要な場合: $ chronyd -Q

  • 継続的な同期の場合、推奨される解決策は次のとおりです。

chrony(d)

NTPデーモンchronydは、システムクロックのドリフトとオフセットを計算し、継続的に調整するため、たとえばログの一貫性を損なうような大きな修正はありません。コストはわずかな処理能力とメモリですが、最新のサーバーでは通常これは無視できます。設置

chronyをインストールするには、ターミナルプロンプトから次のように入力します。

$ sudo apt install chrony

アクティベーションが必要な場合もあります

sudo timedatectl set-ntp on

更新:上記が機能しない場合の別の方法は、実行するcronジョブを設定することです$ chronyd -q

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.