GNU/Linux >> Linux の 問題 >  >> Linux

Linuxのコマンドラインからインターネットから現在の時刻を知る方法は?

bash を使用する場合は、次の行で機能します

$ cat </dev/tcp/time.nist.gov/13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

これは、bash シェルの組み込みネットワーク機能¹ を活用します。 POSIX シェルまたはその他のシェルを使用する場合は、たとえば次のように使用できます。 netcat.

$ nc time.nist.gov 13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

どちらのコマンドも、米国国立標準技術研究所の TCP ポート 13 でタイマー サーバーにクエリを実行し、受信したデータを stdout に出力します。

¹編集: Bash のマニュアル ページから:Bash は、次の表に示すように、リダイレクトで使用される場合にいくつかのファイル名を特別に処理します。

<ブロック引用>

/dev/tcp/host/port
host が有効なホスト名またはインターネット アドレスで、 port が整数のポート番号または の場合 サービス名、bash は対応するソケットへの TCP 接続を開こうとします。

/dev/udp/host/port
host が有効なホスト名またはインターネット アドレスで、 port が整数のポート番号または の場合 サービス名、bash は対応するソケットへの UDP 接続を開こうとします。


ディストリビューションごとに利用可能な NTP サービスがいくつかあります。

ワンタイムクロック同期を実行したい場合 :

date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"

システム時間をハードウェア リアルタイム クロックに設定

hwclock -r --utc
hwclock -w --utc
hwclock -r --utc

(注:これはたまたま Google でうまく機能します。なぜなら、Google はいたるところにサーバーを持っているからです)

Google の最寄りのサーバーが送信する時刻を確認したい場合:

date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"

ntpdate コマンドは -q でこれを行うことができます フラグ:

$ ntpdate -q 1.debian.pool.ntp.org
server 88.191.120.99, stratum 3, offset -0.015076, delay 0.06604
server 88.191.235.218, stratum 2, offset -0.000676, delay 0.06592
server 188.165.240.21, stratum 3, offset 0.001191, delay 0.07005
server 91.121.34.166, stratum 2, offset 0.000565, delay 0.06998
22 Aug 00:56:21 ntpdate[31373]: adjust time server 88.191.235.218 offset -0.000676 sec

man ntpdate から :

   -q     Query only - don't set the clock.

Linux
  1. Linuxコマンドラインからソフトウェアをインストールする方法

  2. Linuxでコマンドラインからファイルを分割して結合する方法

  3. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?

  1. コマンドラインからLinuxサーバーを再起動または再起動する方法

  2. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  3. コマンドラインからのLinuxサーバーの移行

  1. Linuxコマンドラインからtar.gzファイルを抽出または解凍する方法

  2. Linux Time Commandの使用方法:知っておくべきことすべて

  3. コマンドラインからLinuxを再起動(再起動)する方法