2008-10-14 8 views
11

리눅스는 시스템 시간을 설정하기 위해 stime (2) 호출을 제공합니다. 그러나 이렇게하면 시스템 시간이 업데이트되지만 새 시스템 시간과 일치하도록 BIOS 하드웨어 시계가 설정되지 않습니다.어떻게 Linux에서 프로그래밍 방식으로 하드웨어 시계를 설정합니까?

Linux 시스템은 일반적으로 시스템 종료 시간과 주기적으로 하드웨어 시간을 동기화합니다. 그러나이 자동 동기화 중 하나보다 먼저 전원을 껐다 켜면 기기가 다시 시작될 때 시간이 잘못됩니다.

시스템 시간을 설정할 때 하드웨어 시계가 어떻게 업데이트되는지 어떻게 확인합니까?

+0

(텍스트 편집기 탭 표시 줄의 상단에) 저장을 클릭합니다. –

+0

프로그래밍 언어가 중요한 이유는 무엇입니까? 다른 언어에 대한 답변이 다른가요/ –

+0

어 ................. 예. –

답변

14

확인,하지만 당신은 루트, 이런 식으로 뭔가로 로그인 한 경우 : 텍스트 편집기 (케이트는 편집기의 기본입니다) 쿠분투와 다른

struct  rtc_time { 
     int   tm_sec;  
     int   tm_min;  
     int   tm_hour;  
     int   tm_mday;  
     int   tm_mon;  
     int   tm_year;  
     int   tm_wday; /* unused */ 
     int   tm_yday; /* unused */ 
     int   tm_isdst;/* unused */ 
    }; 

struct rtc_time rt; 
/* set your values here */ 
fd = open("/dev/rtc", O_RDONLY); 
ioctl(fd, RTC_SET_TIME, &rt); 
close(fd); 
+1

루트가 필요하지 않고 rtc (4)에 따라 CAP_SYS_TIME 기능 만 제공됩니다. –

9

STIME()를 호출 한 후, 다음을 수행하십시오

system("/sbin/hwclock --systohc"); 

은 자세한 내용은 hwclock과 (8) 매뉴얼 페이지를 참조하십시오.

+2

rtc가 UTC 시간을 사용하도록 설정 되었다면, 그렇지 않으면'--utc' 또는'--localtime'을 추가해야한다는 것에주의하십시오. –

2

또한 하드웨어 클럭이 포인트로만 정확하다는 것을 지적하고자합니다. (느슨한 시스템을 보았습니다./하루에 몇 초가 걸릴 것입니다.)

시계를 시간 서버와 동기화하도록 네트워크 시간 데몬을 설정하는 것이 좋습니다.

물론이 동기화는 데몬이 시작된 후 하드웨어 시계를 동기화 상태로 유지해야 전원이 켜지는 시점과 데몬이 시간 서버와 동기화되는 시점 사이에 도움이됩니다.

+0

내 경험에 비추어 볼 때 대부분의 변형은 모터 보드 배터리의 낮은 전압 때문입니다. 미션 크리티컬이 아닌 경우, 내적 서비스를 시작하기 전에 확인하는 것이 좋습니다. –

2

나는 hwclock의 소스 코드를 읽는 것으로 시작할 것입니다. 자세한 내용은 RTC 남자-페이지 출력

+2

단순히 코드를 사용하는 대신 코드를 읽는 이유는 무엇입니까? –

+2

임베디드 시스템 용으로 작성 중이며 다른 프로그램을위한 공간이 없습니다. 아니면 호기심을 알고 싶을 수도 있습니다. –

+0

원래 질문에 대한 답변이었습니다. 왜 그것이 필요한지 나는 모른다. – iny

0

경우 , 터미널에서 sudo 명령과 함께 자신의 것을 사용하십시오.

  1. 실행 터미널
  2. 복사 및 붙여 넣기 명령 sudo kate /etc/default/rcS 눌러
  3. 사용자 암호 (로그인 암호)를 눌러 입력 입력 바탕 화면에 열립니다
  4. 텍스트 편집기를 입력
  5. 줄 바꾸기 UTC=yesUTC=no
  6. 및 프로그래밍 언어를 지정
  7. 재부팅
관련 문제