回答:
あなたが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でタイマーサーバーに照会し、受信したデータを標準出力に出力します。
¹ EDIT:からBashのmanページ:彼らはリダイレクトに使用されている場合は、次の表に示すようにbashは、特別にいくつかのファイル名を処理します。
/dev/tcp/host/port
hostが有効なホスト名またはインターネットアドレスであり、portが整数のポート番号または
サービス名である場合、bashは対応するソケットへのTCP接続を開こうとします。
/dev/udp/host/port
hostが有効なホスト名またはインターネットアドレスであり、portが整数のポート番号または
サービス名である場合、bashは対応するソケットへのUDP接続を開こうとします。
</dev/tcp/
フォーマットは何ですか?
ディストリビューションごとにいくつかのNTPサービスを利用できます。
1回のclocksyncを実行する場合:
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.