System time/ko

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page System time and the translation is 76% complete.

Outdated translations are marked like this.
Other languages:
English • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어


시스템 클록에서 돌아온 시스템 시간은 유닉스 시스템에서 시간 상태를 유지할 때 사용합니다. 하드웨어 시계 또는 외부 시간 서버로 설정할 수 있습니다.

서문

소프트웨어 시계 vs 하드웨어 시계

The system clock, provided by the kernel, is implemented as a simple count of the number of ticks that have transpired since the 1 January 1970 00:00:00 UTC. This is called Unix time.

The hardware clock (also known as real-time clock or RTC) is typically a component on the mainboard. It runs independent of the state of the operating system all the time, also when the computer is shutdown.

UTC 시간 vs 지역 시간

하드웨어 시계의 시간은 지역 시간 또는 UTC 시간 두가지 표준 방식으로 표현하여 수정할 수 있습니다. 지역 시간은 DST를 포함한 시간대의 실제 시간입니다. 적당한 시간은 UTC 시간인데 시스템 시간은 시간대를 추가하여 시간차와 DST를 계산하기 때문입니다. 그래서 일광 절약 시간을 자동으로 적용하도록 바꾸며, 하드웨어 시계를 바꾸지 않아도 시간대를 바꿀 수 있습니다. 예외가 있다면 듀얼 부팅을 수행하는 시스템에 있습니다. 다른 운영체제가 UTC 하드웨어 시계 설정을 지원하지 않은 경우입니다(기본적으로 윈도우는 지역 시간을 사용합니다).

Configuration

시간대

시간을 제대로 유지하려면, 시간대를 선택하여 시스템이 어디에 위치했는지 알려야합니다.

OpenRC

See Timezone (AMD64 Handbook).

systemd

systemd/ko 에는 시간대를 관리하는 timedatectl 명령이 있습니다:

현재 시간대를 확인하려면:

user $timedatectl

존재하는 시간대를 확인하려면:

user $timedatectl list-timezones

시간대를 Germany 처럼 바꾸려면:

root #timedatectl set-timezone Europe/Berlin

LC_TIME

환경 변수en에는 날짜와 시간의 형식을 정합니다. 자세한 내용은 The GNU C 라이브러리 문서를 참고하십시오.

시스템 시계

보통 시스템 클록 시간은 부팅 과정에서 하드웨어 클록이 설정합니다. 이 대신 네트워크 시간 서버를 활용하거나 시스템 시계를 직접 설정할 수도 있습니다.

시스템 클록 시간을 관리할 때 date 명령을 사용할 수 있습니다:

현재 소프트웨어 시계 시간을 확인하려면:

user $date

To set the system clock, e.g. 12:34, May 6, 2016:

root #date 050612342016

시간 서버

See the NTP article for information concerning the use of time servers.

systemd

systemd에는 시스템 클록 시간을 다루는 timedatectl 명령이 들어있습니다:

현재 소프트웨어 클록 시간을 확인하려면:

user $timedatectl

시스템 시계를 설정하려면:

root #timedatectl set-time "2012-12-17 12:30:59"

하드웨어 시계

하드웨어 시계 기능을 사용하려면, 다음 커널 옵션을 활성화해야합니다:

커널 Necessary kernel options for a hardware clock
    Device Drivers --->
      [*] Real Time Clock --->
            [ ]   Set system time from RTC on startup and resume
            [ ]   Set the RTC time based on NTP synchronization
            [*]   /sys/class/rtc/rtcN (sysfs)
            [*]   /proc/driver/rtc (procfs for rtc0)
            [*]   /dev/rtcN (character devices)
            <*>   PC-style 'CMOS'

실행 시간에 현재 하드웨어 시계 시간을 확인하려면:

root #hwclock --show

하드웨어 시계를 현재 시스템 시계에 맞추려면:

root #hwclock --systohc

하드웨어 시계와 시스템 시간 동기화

보통 하드웨어 시계는 시스템 시계를 부팅과정에 설정할 떄 사용합니다. 이 과정은 커널 자체적으로 처리하거나 부팅 서비스(초기화 스크립트)에서 처리할 수 있습니다. 또한 시스템을 끌 때, 커널이나 서비스에서 소프트웨어 시계를 하드웨어 시계에 기록할 수 있습니다. 이 동작을 통해 부팅을 진행할 때 시스템에서 올바른 시간 정보를 가지고 있도록 보장합니다.

커널 자체 방식

최근의 커널(3.9 이상)에서 리눅스는 시스템 시계를 자동으로 설정할 수 있습니다. 이렇게 설정하려면, Set system time ...로 이동한 후 활성화 할 Set the RTC time ... 드라이버를 선택하십시오:

커널 Letting the kernel sync the system clock
    Device Drivers --->
      [*] Real Time Clock --->
            [*]   Set system time from RTC on startup and resume
            (rtc0)  RTC used to set the system time
            [*]   Set the RTC time based on NTP synchronization
            (rtc0)  RTC used to synchronize NTP adjustment
            [*]   /sys/class/rtc/rtcN (sysfs)
            [*]   /proc/driver/rtc (procfs for rtc0)
            [*]   /dev/rtcN (character devices)
            <*>   PC-style 'CMOS'

The Set the RTC time based on NTP synchronization kernel option is currently supported by chrony[1], NTP and OpenNTPD since version 5.9p1[2].

하드웨어 시간이 최신인지 확인하려면 다음 명령을 실행하십시오:

root #adjtimex --print | grep status

보고한 64비트의 숫자는 설정하지 않은(0값) 상태여야 합니다. 더 많은 내용은 hwclock 맨 페이지를 살펴보십시오('11 minute mode'로 검색).

OpenRC

OpenRC가 hwclock 을 사용할 떄 초기화 스크립트에서는 부팅 과정에서 시스템 시계를 설정할 수 있고, 시스템을 끌 때 시스템 시계를 하드웨어 시계와 동기화할 수 있습니다. 기본적으로 서비스를 활성화한 상태인데 위에서 언급한 커널 내장 방식을 선호한다면 비활성화해야 합니다. hwclock 스크립트는 커널의 실시간 시계를 활용할 경우 실행하지 말아야합니다.

root #rc-update delete hwclock boot
참고
It could however happen hwclock being started as dependency of another rc-service, e.g. sysklogd. In this case the rc-service osclock should be added to the same runlevel as the dependent rc-service.

그러나 OpenRC에서 필요로 한다면 /etc/conf.d/hwclock에서 clock_hctosysclock_systohcYES로 설정하십시오. 기본적으로 서비스는 UTC 시간대 표준으로 설정합니다. 이 설정을 지역 시간대로 설정하려면, clock="local"을 추가하십시오.

파일 /etc/conf.d/hwclock하드웨어 시계 동기화 추가
clock_hctosys="YES" 
clock_systohc="YES"
# clock="local"

hwclock 서비스를 다시 시작하고 하드웨어 시계 초기화 스크립트를 부팅할 때 동작하도록 설정하십시오:

root #rc-service hwclock restart
root #rc-update add hwclock boot

Systemd

systemd는 부팅 과정에서 시스템 클록을 설정할 수 있습니다. 하드웨어 시계를 관리하려면 timedatectl 명령을 사용하십시오:

현재 하드웨어 시계 시간을 확인하려면:

user $timedatectl | grep "RTC time"

하드웨어 시계를 현재 시스템 시계에 맞추려면(UTC 시간 표준):

root #timedatectl set-local-rtc 0

하드웨어 시계를 현재 시스템 시계에 맞추려면(지역시간 표준):

root #timedatectl set-local-rtc 1

Troubleshooting

Dual booting with Windows

Systems that dual boot with another operating system, such as Windows, generally have a struggle over the hardware clock. To make Windows not adjust the hardware clock back to local time, add the following registry entry.

For 64-bit Windows, open regedit then browse to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Create a new QWORD entry called RealTimeIsUniversal, then set its value to 1. Reboot the system. The clock should now be in UTC time.

추가 참조

  • Network Time Protocol
  • NTP - An implementation of the Network Time Protocol.
  • chrony - A versatile implementation of the Network Time Protocol.
  • OpenNTPD - Lightweight NTP server ported from OpenBSD.

외부 자료

References

  1. chrony. Comparison of NTP implementations, chrony, March 1st, 2017. Retrieved on July 11th, 2017.
  2. OpenNTPD. OpenNTPD 5.9p1, OpenNTPD, March 29th, 2016. Retrieved on July 11th, 2017.