왜 우분투의 시계가 느려지거나 빨라 집니까?


16

우분투의 시계는 약 30 분 정도 꺼져 있습니다.

우분투 시간 및 날짜 v. 공식 미국 시간

문제 해결을 어디서 시작합니까?

"인터넷에서 자동으로"설정되어 있다고합니다. "인터넷"이 몇 시인 지 알고 있는지 어떻게 확인할 수 있습니까?

세부

우분투는 인터넷과 통신 할 시간이 충분했습니다.

$ date; uptime
Fri May 18 05:56:00 PDT 2012
 05:56:00 up 12 days, 10:48,  2 users,  load average: 0.61, 0.96, 1.15

웹 검색을 통해 찾은 이번 시간 서버 는 올바른 시간을 알고있는 것으로 보입니다.

$ date; ntpdate -q north-america.pool.ntp.org
Fri May 18 05:56:09 PDT 2012
server 208.38.65.37, stratum 2, offset 1752.625337, delay 0.10558
server 46.166.138.172, stratum 2, offset 1752.648597, delay 0.10629
server 205.189.158.228, stratum 3, offset 1752.672466, delay 0.11829
18 May 05:56:18 ntpdate[29752]: step time server 208.38.65.37 offset 1752.625337 sec

NTP와 관련하여보고 된 오류가 없습니다 :

$ grep -ic ntp /var/log/syslog
0

재부팅 후 시간이 자동으로 수정되고 다음과 같은 메시지가 나타납니다 /var/log/syslog.

May 18 17:58:12 aux ntpdate[1891]: step time server 91.189.94.4 offset 1838.497277 sec

ntpdate에 의해보고 된 오프셋의 로그는 시계가 매시간 약 9 초씩 표류하고 있음을 나타냅니다.

$ while true; do ntpdate-debian -q | tail -n 1 >> 'drift.log'; sleep 16m; done
^C
$ r -e '
    attach(read.table("drift.log", header=FALSE))
    clock <- as.POSIXct(paste(V1, V2, V3), format="%d %b %H:%M:%S")
    fit <- lm(V10~clock)
    png("drift.png")
    plot(clock, V10, xlab="Clock time", ylab="Time server offset (s)")
    abline(fit)
    mtext(sprintf("Drift rate: %.2f s/hr", fit$coefficients[[2]]*3600))
'

시계 시간 대 시간 서버 오프셋


배경 : ntp정확한 시간유지 하는 훌륭한 도구 입니다. 그러나 잘못된 시간에서 현재 시간에 도달하려면 유한 시간 (몇 분 또는 몇 시간)이 걸립니다. 이것은 ntp-servers (선택한 항목) 및 이들에 대한 인터넷 대기 시간과 관련이 있습니다. @Floyd 는 정확한 시간을 신속하게 강제하는 지름길을 개설했습니다. 그러나 더 나은 시간 (및 ntp 사용 )을 위해서는 신중하게 ntp 서버를 선택해야합니다.
david6

나의 차는 이것을한다… 나를 미치게한다… 나는 매주 20 분의 시간을 롤백해야한다…
TheXed

가장 먼저 시도 할 것은 마더 보드의 배터리를 교체하는 것입니다.
TheXed

답변:


17

ntp 는 컴퓨터를 올바른 시간으로 설정하는 데 도움이되며, 컴퓨터를 뒤로 실행하지 않고 실행하므로 일부 프로그램에는 문제가 될 수 있습니다.

시간을 설정하는 것뿐만 아니라 컴퓨터가 시간을 유지하는 방식 을 지속적으로 조정하여 시간이 한 순간에 정확할뿐만 아니라 실시간에 가깝게 유지합니다 (수십 분이 아니라 수십 분 이내) . 위상 (시간)과 속도 (클럭 "틱"속도)를 모두 조정합니다. ntp 는 시계를 거꾸로 실행하지 않습니다. 재부팅 후 시계를 틱하는 속도를 설정하는 데 시간이 오래 걸릴 수 있으므로 ntp는 /var/lib/ntp/ntp.drift 파일에서 드리프트를 추적합니다. ntp를 실행하지 않기 때문에이 중 어느 것도 발생하지 않습니다.

ntp 는 잠자기 랩톱 및 데스크톱 및 가상 머신이 일정 시간 동안 실행을 중지하기 때문에 예전처럼 인기가 없습니다. 항상 실행되는 컴퓨터와 시간이 연속되는 실제 환경에서 자체 일정대로 가끔씩 실행되도록 설계되었습니다. 이것이 아마도 현대 워크 스테이션에 기본적으로 설치되지 않은 이유 일 것입니다. [Vmware의 경우이 내용을 참조 하십시오.]

대신 네트워크 인터페이스가 나타나면 ntpdate 가 실행됩니다. 잠자기 노트북이 깨어 나면 네트워크 연결이 다시 설정되고 ntpdate 가 실행되며 시간이 다시 맞습니다. 기계의 하드웨어 시계가 꽤 정확하고 네트워크가 상당히 자주 올라가거나 내려 가면 일반적으로 대부분의 사람들에게 충분합니다.

어떤 이유로 재고 ntpdate 가 항상 실행되지 않습니다. 이 경우 대신 ntpdate-debian을 사용하십시오 . for.mer의 문법은 ntpdate ntp.ubuntu.com 과 같 으며 후자는 ntpdate-debian입니다.

이러한 것들 중 하나가 없으면 ntp 가 시간을 유지하는 더 좋은 방법입니다.

시스템은 매번 타이머 인터럽트를 수행하고 매 인터럽트 시간에 대한 아이디어를 업데이트하도록 설계되었습니다. 하드웨어 타이머가 사양대로 실행되는 한. 시간이 너무 표류하지 않습니다. 하드웨어 타이머가 아닌 경우 시간이 더 표류합니다 (손목 시계 또는 배터리 제어 시계와 같은 이유로 모든 시계가 일부 표류합니다) 벽에 연결된 시계는 주파수와 위상에 따라 시간과 동기화됩니다. 전력 회사).

대부분의 컴퓨터 타이머는 집적 회로의 수정 제어 발진기 회로에 의해 제어됩니다. 결정에도 불구하고, 환경, 주로 온도에 따라 더 빠르고 느리게 작동합니다. 우리가 모르는 시간 동기화 소프트웨어가 설치되어 있지 않으면 시스템 시계가 사양에 맞지 않는다고 말할 수 있습니다.

하루나 이틀 동안 ntp 를 실행했다면 /var/lib/ntp/ntp.drift에 정보를 저장하여 인터럽트 당 운영 체제 시간의 진행 속도를 얼마나 조정해야하는지 나타냅니다. 인터넷을 통해 실시간으로 하드웨어 클럭 속도를 일치시킵니다. 파일을 동일하게 유지하고 그 후 1 분 후에 ntp 시작 및 중지 (/var/lib/ntp/ntp.drift 파일을 변경하지 않은 상태로 유지한다고 가정)는 클럭 바이어스 ntp 세트가 계속 남아 있으면이를 해결하기 위해 많은 노력을 기울일 수 있습니다. ntp가 종료됩니다. 나는이 세부 사항을 확신하지 못합니다.

ntp 가 /var/lib/ntp/ntp.drift에 저장 하는 값 이 내 값과 크게 다르다고 생각합니다.

그러나이 시스템이 항상 계속 실행되는 경우, 가장 좋은 방법은 ntp 를 설치 하여 수행하는 것입니다. 시작하기 직전에 시간을 얻는 방법에 대한 자세한 내용은 다른 답변을 참조하십시오. 데스크톱 에서 ntp 를 실행 하고 랩톱에서 ntpdate 를 실행 합니다.

흥미로운 가능한 대안은 adjtimex에 언급 nealmcb 의해 답변.

시스템이 항상 계속 실행되지 않으면 부팅시 ntpdate 를 실행 하는 것이 좋습니다.

경고 컴퓨터 시간이 거꾸로가는 경우 괴물 수있는 몇 가지 소프트웨어를. 부팅 ntpdate 실행 하면이 문제가 발생할 수 있습니다.

한 가지 문제는 문제가 될 수 있다는 것입니다. ntp 는 시간이 너무 멀지 않을 것으로 예상합니다. 만약 그렇다면, 보수적으로 행동하려고하면, ntp 는 시간을 전혀 조정하지 않을 것입니다. 이 상황에있는 경우 부팅시 ntpdate 를 실행 하여 올바른 시간으로 시간을 초기화 한 다음 ntp를 실행하여 정확한 시간을 유지하도록 실행하십시오. 특히 잘못된 마더 보드 배터리로 인해 오랫동안 꺼져있는 컴퓨터를 부팅 할 수 있으므로이 오류가 발생할 수 있습니다.


좋은 설명 요한! 단 하나의 작은 것-대부분의 마더 보드의 날짜 / 시간은 별도의 RTC (실시간 시계)에 의해 유지되며, 자체 RTC (실시간 시계)는 자체 32.768 KHz 크리스털을 사용합니다 (주파수를 2 ^ 15로 정확히 1 초씩 나누어주기 때문에). 일반적으로 100+ MHz 인 clock은 날짜 / 시간 유지와 아무 관련이 없습니다. 오버 / 언더 클로킹으로 인해 엉망이되는 대신 RTC 모듈 / 회로에서 일반적으로 수정 드리프트입니다. 이 문제를 찾아 댓글에 답장하거나 답변을 수정하여이를 반영 할 수 있습니까?
ish

둘 다 할게요! 내가 말한 것처럼 불가능하다고 생각하는 오버 클럭킹에 대한 언급을 제거했습니다. 그러나 RTC는 부팅시 시간을 설정하는 데 사용됩니다. 귀하의 의견에서 언급했듯이 1 초까지만 정확합니다. man rtc페이지는 말한다 : "RTC의 커널에 의해 유지 gettimeofday를 구현하는 데 사용되는 소프트웨어 시계입니다 시스템 클럭과 혼동해서는 안된다 (2) ..."시스템 클럭은 FSB 클럭과 관련이 있는지 여부를 몰라 . 커널 설정을 살펴보면 최신 Ubuntu 정밀 i386 커널은 250Hz에서 시스템 클럭이 업데이트됩니다. 의견 주셔서 감사합니다!
존 S Gruber

@izx 랩탑 시스템에서 커널은 HPET을 클럭 소스로 사용합니다. 구성 할 수 있습니다. Wikipedia는 이것이 사우스 브리지 기능의 일부라고 말합니다. 나는 그것이 FSB와의 관계에 대해 무엇을 말하는지 모르지만, FSB는 노스 브릿지의 일부입니다.
존 S Gruber

John과 @izx 감사합니다. 나는 이것의 종합성에 기뻐합니다. izx, 대신 승인 된 것으로 표시 한 것을 개인적으로 받아들이지 않기를 바랍니다. 나는 그것이 미래의 방문객들에게 더 잘 읽을 것이라고 생각합니다.
ændrük 2016 년

@ ændrük : 전혀 문제 없습니다. 보시다시피 John의 철저 함을 매우 높이 평가했습니다.
ish

12

-일반적으로 시간은 각 부팅 또는 잠에서 깨어날 때마다 한 번만 동기화됩니다.

따라서 문제는 우분투의 기본 시간 서버 (무엇입니까?)의 시간이 잘못되었거나 우분투가 인터넷에서 시간을 자동으로 설정하지 않는 것 같습니다.

아니요, Ubuntu의 시간 서버가 정확하며 시간이 자동으로 설정됩니다.

문제는 일반적으로 부팅 할 때마다 한 번만 발생한다는 것입니다 (또는 종료, 절전 또는 최대 절전 모드에서 네트워크 인터페이스가 나타날 때마다 더 정확해야 함 ). 가동 시간을 기준으로 일주일 이상 동기화되지 않았다고 말하는 것이 안전합니다. 그리고 어떤 이유로 시스템 시계가 약간 빠르게 실행됩니다.

- cron자주 재부팅하지 않거나 서버 / 데스크톱이 절대 절전 모드로 전환되지 않는 경우 시간별 작업을 동기화하도록 설정

최선의 방법은 크론 작업을 설정하는 것입니다. 정확한 시간을 원한다면 매시간 말하겠습니다. 가장 쉬운 방법은 다음과 같습니다.

  • sudo editor /etc/cron.hourly/ntpsync

다음 줄을 추가하십시오.

#! / bin / bash

ntpdate ntp.ubuntu.com # 또는 선택한 서버
  • 저장, 종료 및 sudo chmod +x /etc/cron.hourly/ntpsync

원하는 /etc/cron.daily경우 하루에 한 번 대신 이것을 넣을 수 있습니다 .


에 딱 맞다. 시계가 왜 틀린지에 대한 내 질문에 올바르게 대답하기 위해 이것을 받아들이고 있지만 그 해결 방법에 회의적입니다. 수행 할 조치를 결정하기 전에 이에 대해 조금 더 배워야합니다.
ændrük

ntp.conf 파일에서 선택한 서버를 설정 한 경우 여기에서 다시 정의해야합니까?
Snekse

6

이것은 ntp 시간 디먼을 설치했고 시스템의 시간이 너무 떨어져서 신속하게 정정 할 수없는 경우에 발생할 수 있습니다.

터미널을 열고 고치려면

  sudo service ntp stop
  sudo ntpdate swisstime.ethz.ch
  date
  sudo service ntp start

이것이하는 일 :

  1. ntp 데몬 중지
  2. 시계 설정
  3. 시간은 이제 옳 아야한다
  4. ntp 데몬 재시작

ntp가 설치되어 있지 않으면 다음을 수행하십시오.

  sudo apt-get install update

업데이트 : 여기에서 권장하는 것처럼 cron 작업에서 ntpdate를 사용하면 미묘한 문제가 발생합니다.

ntpdate는 매시간 정도 시간을 '점프'합니다. ntp를 사용하면 시계를 기울여 시간을 조정하므로이 문제를 피할 수 있습니다. 또한 이웃에서 ntp 서버를 선택하면 정확도가 높아지지만 필요하지 않습니다. 기본 ntp 구성 파일에는 여러 개의 서버가 있으며 서버는 지연을 자동으로 보상합니다.

결론 :-ntp 사용-멀리 떨어져 있으면 ntp를 종료하고 ntpdate를 한 번 실행 한 다음 ntp를 다시 시작하십시오.


/etc/init.d/ntp존재하지 않습니다. 이것은 상당히 최근의 Ubuntu 12.04 설치이며 시간과 관련하여 의도적으로 변경하지 않았습니다.
ændrük

그런 다음 설치하는 것이 좋습니다.
플로이드

가능한 한 시스템 전체 구성 및 서비스를 방해하지 않는 것이 좋습니다. 이 파일이 기본적으로 설치되어 있지 않은 경우 기본 시간 및 날짜 설정이 작동해야하는 이유는 무엇입니까?
ændrük

1
재부팅 후 시간이 정확합니까? 시계 업데이트가 ntpdate를 한 번만 실행한다고 생각합니다. 일부 시스템에는 Linux에서 유지 관리하는 시스템 간 시계가 너무 빨리 실행된다는 문제가 있습니다. 나는 특히 가상 머신으로 실행되는 시스템에서 이것을 가지고 있습니다.
플로이드

1
재부팅 또는 종료 후에도이 문제가 지속되면 CMOS 셀이 MOBO에서 죽었을 수 있습니다.
atenz

1

비슷한 문제가 있었고 방화벽의 문제로 인해 발생했습니다. 결국 나는 매시간 cron 작업을 추가했지만 표준 포트를 사용하지 않도록 -u인수를 추가했습니다 ntpdate.

내 문제는 실제로 Ubuntu가 ntpdate작동 하는지 확인하지 않고 작동한다고 자동 가정하여 발생했습니다.

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