インターネットから時刻と日付を設定するにはどうすればよいですか?


35

コマンドラインからインターネットから日付を取得し、コンピューターの時計を設定するにはどうすればよいですか?


3
投票権がわかりません。簡単な質問は、コミュニティを強力にするものです。たとえば、これを
モーセン

3
マウスで質問の下向き矢印の上にマウスを移動すると、「この質問は研究努力を示していません。不明瞭または有用ではありません」と表示されます。私はあなたの質問を最初の(あなたが見つけたものの兆候なし)、2番目の(あなたが取り組んでいる特定のプラットフォームの兆候なし、そしてなぜこれがコマンドラインでなければならないのか(通常の時間デーモンではなく) )および 3番目(ほとんどの* nixユーザーには、デフォルトでタイムデーモンがインストールされます)。
アントン

+1これは以前に何度も私を悩ませてきたものであり、この特定のテーマについて簡潔で有用なものを見つけることが不可能であるという理由だけで、ダウン投票も理解していません。
l0b0

@Mohsen私はダウン投票しませんでしたが、リンクした質問との違いはswitch、ルビーにはないことですdate -s(マンページに示されているように)、または以下に説明するコマンドのいずれかを使用して日付を直接設定できます...
ウルリッヒ・ダンジェル

1
私は同意@Anthon:その質問は、一般的なアドバイス「使用NTP」は必ずしも該当しますBusyBoxの、小さなデバイスについてです
ジル「SO-停止されて悪」

回答:


29

以下を使用できます。

sudo dpkg-reconfigure tzdata

タイムゾーンを設定します。

インターネットから時刻と日付を更新するには、次を使用します。

インストール

ntpdがインストールされていない場合は、次のコマンドのいずれかを使用してntpdをインストールします。

  • RPMベースの場合:

    yum install ntp 
    
  • Debianベースの場合:

    sudo apt-get install ntp
    

構成

/etc/ntp.conf構成ファイルで少なくとも次のパラメーターを設定する必要があります。

たとえば、viテキストエディタを使用して/etc/ntp.confファイルを開きます。

  # vi /etc/ntp.conf

サーバーパラメータを見つけて、次のように設定します。

  server pool.ntp.org

ファイルを保存し、ntpdサービスを再起動します。

  # /etc/init.d/ntpd start

次のコマンドを使用して、システムクロックをNTPサーバーにすぐに同期できます。

  # ntpdate pool.ntp.org

*時刻​​と日付を手動で設定するには、次の構文を使用します。

 date --set="STRING"

たとえば、新しいデータを2006年10月2日18:00:00に設定し、rootユーザーとして次のコマンドを入力します。

# date -s "2 OCT 2006 18:00:00"

または

# date --set="2 OCT 2006 18:00:00"

次の構文を使用してフォーマットを簡素化することもできます。

# date +%Y%m%d -s "20081128"

時間を設定するには、次の構文を使用します。

# date +%T -s "10:13:13"

どこで、

10:時間(hh)13:分(mm)13:秒(ss)

AMまたはPMのいずれかに相当する%pロケールを使用して、次のように入力します。

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"

日付情報はすべて有効であるように見えますが、OP from the internetタイトルの要件はどこにも考慮されていません。
アントン

tzdata(タイムゾーンデータ)パッケージはインターネットからのデータのみを同期すると信じています。私が間違っている場合は修正してください。
tusharmakkar08

3
tzdataは、実際の日時ではなく、タイムゾーンと夏時間(開始、終了、エポック)に関する情報です。もちろん、タイムゾーンとUTC時間の知識に基づいてローカル時間に到達する方法を知ることは便利ですが、それでもインターネットから後者を取得する必要があります。
アントン

あなたは間違っている。タイムゾーンデータを更新する必要があります(常に変更が発生するため)。ただし、インターネットから自動的に更新されることはなく、インターネットから時間を設定することもありません。
ウルリッヒダンジェル

@アンソン:私はそれに応じて私の答えを編集しました。ありがとう。
tusharmakkar08

23

日付を更新するためだけに何かをインストールしたくない場合に、時間を更新するために見つけた小さなコード。:)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

1
google.inは自分のタイムゾーン(インド)の現在の時刻を取得するために使用します。
ディラワー

Z時間はズールー時間帯で与えられることを示す末尾に注意してください。したがって、コンピューターの時間帯が正しく設定されている場合、特別な時間帯の操作は必要ありません。
user202729

10

私はこれを使用します:

sudo ntpd -qg; sudo hwclock -w

最初にntpdに時間を設定するよう指示し、その後-qで停止します。また、時計に大きなエラーがある場合、ntpdに-gで調整するように指示する必要があります。最後に、ハードウェアにクロックを書き込み、hwclock -wでリブートするときに変更を保存します(ハードウェアクロックを現在のシステム時刻に設定する場合は-w、違いがあります)。


1
私は2番目のコマンドは短絡されて最初のコマンドは、(例えばネットワーク接続のダウンを)失敗した場合ように「&&」の代わりにセミコロンのでこれを行う傾向がある
テオフラストス


5

一部のディストリビューションは、その目的でrdateを出荷しています。基本的な使用法:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org

ntpよりも優れた簡単な方法
andrewtweber

pool.ntp.orgからの接続を拒否するようになりましたrdatetime.nist.gov動作します。また、システム時間を設定したら、ハードウェアクロックもhwclock -w設定してシステム時間に設定する必要があります。その後、実行することでそれが正しいことを確認できますhwclock -r
-MatthewLee

5

いくつかの研究の後、私はこれで終わった。私は自分のサーバーにもそれを適用しました:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

最後のコマンドで有効なサーバーのリストが表示されたら、準備は万端です。このコマンドは非常に複雑なアルゴリズムのセットを実行し、クロックドリフトなどを繰り返し、それらを補正します。NTPサーバーへの接続を失っても、かなり正確なクロックになります。ただし、コマンドを開始するには数分かかります。

ソース: hereおよびhere


0

「ピア」(クエリ可能なホスト)を見つけるには、を使用できますntpq -p

既にNTPサービスを実行している場合は、手動で更新する前に停止する必要があります。たとえば、 sudo service ntp stop

これで、たとえばを使用して、ピアを照会できますsudo ntpdate "peer"


0

使用RDATEで提案されているようなツールをmanatworkの答えが、SNTPプロトコルと-nし、IPv4 -4のオプション:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

このツールは、次の方法でDebianにインストールできます。

sudo apt-get install rdate

0

Tusharの返信に加えて、私もやらなければならなかったapt-get install ntpdate、Ubuntu 14.04でした。

評判はコメントに十分ではないため、回答として投稿します。


0

定期的にクロックをリセットする非ntp / ntpdの方法も探していました。google.comのヘッダー解析は気に入ったが、ubuntuでは機能しないことがわかった。これはRaspberry Piでも機能すると思います。

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

また、wgetの代わりにcurlを使用する代替手段。

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Cellular Networkを使用してPIでテストした結果は似ています。

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

注:hostを使用してgoogle.comをIPアドレスに解決し、iptablesでこのコマンドの実行中にそのIPのみを開くことができるようにします。

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