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.