리눅스의 커맨드 라인에서 인터넷의 현재 시간을 아는 방법?


답변:


30

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) *

두 명령 모두 National Institute of Standards and Technology의 TCP 포트 13에서 타이머 서버를 조회하고 수신 된 데이터를 stdout에 출력합니다.

¹ 편집 : 에서 배시 매뉴얼 페이지 배쉬는 다음 표에 설명 된대로 그들은, 재 지정에 사용하는 경우 특별히 여러 파일 이름을 처리합니다

/dev/tcp/host/port
host가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 bash는 해당 소켓에 대한 TCP 연결을 열려고 시도합니다.

/dev/udp/host/port
host가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 bash는 해당 소켓에 대한 UDP 연결을 열려고 시도합니다.


좋아요, +1 이것이 어떻게 작동하는지 조금 확장 할 수 있습니까? 또는 여기에 많은 bash 지식이 누락 된 것 같으 므로이 동작을 살펴볼 이름을 지정하십시오. </dev/tcp/형식 은 무엇입니까 ?
terdon

이 접근 방식에서 볼 수있는 두 가지 사소한 단점은 다른 시간대를 쉽게 지원할 수 없으며 형식을 직접 지정할 수 없다는 것입니다. 이러한 상황을 해결하기 위해 time api를 사용할 수 있습니다 . 예를 들어,보다 읽기 쉬운 방식으로 중앙 유럽의 실제 시간을 쿼리하려면 다음을 호출하면됩니다.curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
Moreaki

time.nist.gov에 속도 제한이 있는지 또는 과부하 상태인지 확실하지 않지만이 호스트와는 다른 결과를 얻습니다.
Snowcrash

22

배포판마다 여러 가지 NTP 서비스가 제공됩니다.

한 번만 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에서 가장 가까운 서버가 몇시에 전송하는지 확인하려면 다음을 수행하십시오.

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

17

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.

0

HTP 를 사용하는 HTTP를 사용하여 인터넷을 통해 시간을 얻을 수 있습니다. HTPhtpdate일반적으로 가장 가까운 초 단위의 정확도 만있는 많은 시스템에서 사용 가능 하거나 tlsdate더 나은 정확도를 제공하는 TLS를 사용하여 얻을 수 있습니다.

tlsdate -nV google.com

또한 ntpdate는 더 이상 사용되지 않으므로 sntpMacOS에 기본적으로 설치되어 ntp 배포의 일부로 제공되므로 날짜를 훨씬 정확하게 얻을 수 있습니다.

sntp pool.ntp.org 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.