gnu coreutils `date`는 어떻게 작동하나요? [폐쇄]

gnu coreutils `date`는 어떻게 작동하나요? [폐쇄]

이 사이트에는 비슷한 질문이 없습니다. , manpage방법을 설명하는 데 도움이 되지만사용 date, 배경 정보가 많지 않습니다. 페이지 info(맨페이지에 지정됨: )조차도 변수를 기반으로 작동하는 info '(coreutils) date invocation'방식에 지나지 않습니다 .TZ

date명령줄 유틸리티가 어떻게 작동하는지 알고 싶습니다 . 구체적으로,

date +%s

에포크 이후의 초 수를 반환합니다 1467743297(예: 1970-01-01 00:00:00 UTC).

예를 들어, 인터넷 연결이 필요하지 않다고 생각합니다. 그럼 또 그렇죠?가끔특정 소스와 다시 동기화하려고 하시나요? 그렇다면 이 소스는 어떻게 지정됩니까? 그렇지 않다면 특정 기계에서 날짜별로 보고된 값에 대해 얼마나 확신할 수 있습니까?

섹션 21.1.5info페이지는 date시스템/소프트웨어 시계만 다루고 그와의 동기화는 hwclockOS에 따라 다릅니다. 그럼... 아마도 이 질문이 더 적절할 것 같습니다“어떤 시스템이 더 정확하게 보고하나요 date +%s?”date이는 또한 정확도가 시스템 하드웨어 시계의 정확도로 제한되며 특히 시스템/소프트웨어 시계의 영향을 받는다는 것을 의미한다고 생각합니다 . (예를 들어, 고정밀 하드웨어 시계를 사용하더라도 소프트웨어 시계가 정확도를 방해할 수 있습니다.)

답변1

date어떤 것과도 동기화를 시도하지 않고 strace date ...시스템에 알려진 신기원 이후의 시간을 찾기 위해 일부 시스템 호출(Linux에 표시되거나 표시되지 않을 수 있음)만 수행합니다.

시스템 자체는 BIOS 시계와 동기화될 수 있습니다. 또는 가상 머신은 실행 중인 상위 머신으로부터 현재 시간을 얻을 수 있습니다. 또는 rdateNTP(또는 거의 동일한 기능을 가진 다른 소프트웨어, 레거시 또는 정밀 시간 프로토콜(PTP)로) 또는 하드웨어 GPS 또는 라디오를 사용하여 시간을 설정할 수 있습니다. date관리자가 BBC 라디오를 듣고 date시스템 시간을 정시에 수동으로 설정하지 않는 한(아직도 정시에 doot doot doot dee를 하고 있습니까?) 이 중 어느 것도 관련이 없습니다 .

시스템 시계의 정확도는 NTP 구성(또는 사용된 다른 소프트웨어), NTP(또는 유사한 소프트웨어) 손상 여부, BIOS 손상 여부(4년 후에 시스템이 부팅되는 것을 본 적이 있으며 호스트는 다른 이유 깨진 NTP 설정, 흥미롭게도 NFS 서버입니다 Makefile...), 하드웨어 시계가 오작동하는지 여부 및 기타 다양한 세부 사항. NTP를 사용하는 경우 peers명령 ntpq또는 드리프트 파일을 확인해 볼 가치가 있습니다.

가장 정확한 시간을 얻으려면 (제외각 호스트에 원자시계 배치...) 읽어보고 싶을 수도 있습니다PTP "더 높은 정밀도를 향하여"(또한 배웠다.시간은 환상이다).

답변2

date인터넷 연결이 필요하지 않다는 가정은 정확합니다 . 단지 시스템 시계에 저장된 현재 시간을 출력합니다. (자세한 내용은시간 및 날짜 명령)

하드웨어 시계는 시스템 전원이 꺼지거나 플러그가 뽑힐 때 현재 시간을 유지하는 마더보드의 배터리 구동 회로입니다.

시스템이 부팅되면 커널은 하드웨어 시간을 추출하고 시스템(소프트웨어) 시계를 설정합니다. 이는 저전력 하드웨어 시계보다 훨씬 더 정확한 프로세서 시계에서 실행됩니다. (더여기)

하드웨어 및 소프트웨어 시계는 명령에 hwclock --systohc따라 동기화될 수 있지만 서로 독립적으로 실행됩니다 . hwclock --hctosys소프트웨어 시계는 일반적으로 시스템이 종료될 때 하드웨어 시계에 기록됩니다.

외부 타이밍 기관과 동기화하려면 rdate일회성 동기화를 사용하거나 지속적인 업데이트를 위해 ntp 유틸리티를 설정하십시오. 또한 ntp 데몬은 인터넷 소스에 대한 시스템 시계의 드리프트를 계산하고 인터넷 연결이 끊어지더라도 이를 수정합니다.

관련 정보