반응형
http://blog.naver.com/jungwoodol/220112373300


5. CentOS 기본 설정

5.2. 날짜 및 시간설정
리눅스에서 날짜 및 시간설정은 아주 중요하다. 리눅스를 서버로 운영하는 경우 시간이 달라지면 입력되는 DB데이터, 남겨지는 로그데이터, 웹서버에 접속한 기록등에 기록된 날짜 및 시간이 잘못 기록될 것이다. 이는 DB서버, WAS, 웹서버 등으로 분산된 경우 더욱 심각할 것이다.
최근 OS는 두 개의 시계를 가지고 있다. 하나는 일반적으로 사용하는 시스템 시계(소프트웨어 시계)이고, 하나는 하드웨어 시계(실시간 시계, CMOS 시계 또는 BIOS 시계) 이다. 시스템 시계는 커널의 timer에 의해 구동되고, 하드웨어 시계는 메인보드의 내장타이머에 의해 구동된다. 보통 리눅스 시스템을 부팅할 때 하드웨어 시간을 가지고와서 시간대와 써머타임(summer time) 등의 설정을 적용해 시스템 시간을 설정한다. 리눅스 시스템을 종료하는 과정에서 시스템 시간을 하드웨어 시계에 설정한다. 갑작스럽게 리눅스 시스템이 종료된 경우 시간이 틀어지는 경우가 있는데 이는 하드웨어 시계의 시간이 맞지 않는 경우이다. 
시간을 확인하거나 설정하는 방법에 대해 알아보도록 하자.

5.2.1. 날짜 및 시간 프로그램 (GUI)
프로그램 > 시스템도구 > 설정 > 날짜 및 시간

수동으로 시간설정
아래 그림은 날짜 및 시각 설정 실행화면이다. 아래 그림과 같이 시간대(Time zone)을 설정하고 날짜 및 시간을 설정할 수 있다. 
  

NTP(Network Time Protocol)를 이용한 자동설정
만약 위 그림에서 네트워크 시간(N)을 켜면 NTP를 이용하여 시간동기화를 하게 된다. NTP에 대한 내용은 뒤쪽에 더 자세히 다루도록 하겠다.

5.2.2. timedatectl 명령어를 사용한 설정
CentOS 7 부터는 많은 명령어들을 통합한 프로그램을 제공한다. 시간과 관련된 부분에도 새로운 명령어인 timedatectl을 제공한다. 시간을 보거나 설정하는 아주 유용한 유틸리티이다. 물론 CentOS 6 이하 버전에는 존재하지 않으니 다음에 소개되는 date, hwclock등의 명령어를 사용해야 한다.

1. 시간 정보 확인

7~] #  timedatectl
      Local time: 목 2014-07-10 20:59:54 KST
  Universal time: 목 2014-07-10 11:59:54 UTC
        RTC time: 목 2014-07-10 11:59:50
        Timezone: Asia/Seoul (KST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a


위 내용을 살펴보면 timedatectl 명령어를 실행하면 다음 내용이 나타난다.
Local time : 현재 지역(Asia/Seoul, KST) 시간
Universal time : 협정세계시
RTC time : Real-time clock(하드웨어 시계, CMOS시계, BIOS시계라고도 함)
Timezone : 시간대(Time zone)
NTP enabled : NTP 활성화 여부 
NTP synchronized : NTP로 동기화되었는지 여부
RTC in local TZ : RTC(하드웨어 시계)를 시스템 시계와 동일하게 사용할 것인지 여부이다. yes로 설정하면 썸머타임이 설정되지 않고, Timezone 설정에 문제가 많다.
DST active : DST(Daylight saving time, 썸머타임) 설정여부

2. 날짜 및 시간설정
날짜와 시간 모두 설정

7~] #  timedatectl set-time "2014-07-07 22:42:30“

위 설정은 2014년 7월 7일 오후 10시 42분 30초로 설정한 것이다.

날짜만 설정

7~] # timedatectl set-time "2014-07-07"

위 설정은 2014년 7월 7일으로 설정한 것이다.

시간만 설정

7~] # timedatectl set-time "22:42:30"

위 설정은 시간을 오후 10시 42분 30초로 설정한 것이다.

3. 시간대(Time Zone) 변경
CentOS 6 이하 버전에서 시간대를 변경하는 것은 조금 까다로웠다. CentOS 7에서는 timedatectl을 이용하면 아주 쉽게 변경할 수 있다.
먼저 지원하는 시간대를 확인한다. (시간대가 너무 많이 출력될 것이니 파이프(|)와 grep 명령어로 Asia 지역만을 걸러낼 것이다.)

7~] # timedatectl list-timezones | grep Asia
Asia/Aden
Asia/Almaty
Asia/Amman
Asia/Anadyr
Asia/Aqtau
...

리스트 중 변경하고자 하는 시간대가 있으면 다음과 같이 입력한다. 

7~] # timedatectl set-timezone Asia/Seoul

위와 같이 입력하면 “Asia/Seoul"으로 시간대가 설정된다.

4. RTC(하드웨어 시계) 시간 설정
하드웨어 시계의 시간을 설정하기 위해서는 다음과 같은 과정을 거쳐서 설정한다.

7~] # timedatectl set-local-rtc yes
7~] # timedatectl set-time "2014-07-07 22:42:30“
7~] # timedatectl set-local-rtc no

위 과정은 먼저, 시스템에서 하드웨어 시계를 사용하게 설정하고, 날짜와 시간을 설정 한 다음, 시스템에서 하드웨어 시계를 사용하지 않게 하는 것이다. 물론 시간을 맞추는 과정에서 ntpdate, rdate 명령어를 사용하여 타임서버에서 시간을 동기화할 수 있다.

5. 자동 시간동기화
timedatectl 명령어는 NTP(Network Time Protocol)를 사용하여 원격지에 있는 타임서버에서 시간을 가져와 시스템 시계와 자동으로 동기화 시킬 수 있다. 이 설정은 앞에서 살펴보았던 GUI환경의 날짜 및 시간 설정 프로그램에서 네트워크 시간을 켜는 것(활성화), 끄는 것(비활성화)과 동일하게 작동한다. 
다음과 같이 설정하여 시간 동기화를 활성화 한다.

7~] # timedatectl set-ntp yes

자동 시간 동기화를 정지시키기 위해서는 다음과 같이 입력한다.

7~] # timedatectl set-ntp no



5.2.3. date 명령어를 이용한 시스템 시계 설정
날짜 및 시간을 설정하거나 확인하기 위해서는 CentOS 6이하 버전은 date 명령어를 이용한다. 다음과 같이 입력해 보자.

날짜와 시간 모두 설정하는 경우

~] # date -s "2014-07-07 22:42:30“

위 설정은 2014년 7월 7일 오후 10시 42분 30초로 설정한 것이다.

날짜만 설정

~] # date +%D -s "2014-07-07"

위 설정은 2014년 7월 7일으로 설정한 것이다.

시간만 설정

~] # date +%T -s "22:42:30"

위 설정은 시간을 오후 10시 42분 30초로 설정한 것이다.

날짜와 시간을 보기 위해서는 date 명령어만 입력하면 볼 수 있다.

~] # date
2014. 07. 07. (월) 22:47:37 KST


날짜와 시간을 내가 원하는 방식으로 출력할 수 있다. 

~] # date '+%Y-%m-%d %H:%M:%S'
2014-07-07 22:52:36

위와 같이 다양한 포멧을 지정하여 출력할 수 있다. 더 많은 정보는 “date --help"를 입력하면 볼 수 있다. 특히 쉘스크립를 작성할 때 유용하다.



5.2.4. hwclock 명령어를 이용한 시스템 시계 설정
하드웨어 시계를 설정하거나 확인하기 위해 CentOS 6이하 버전은 hwclock 명령어를 이용한다. 리눅스를 사용하면서 하드웨어 시계를 설정하는 경우는 거의 없을 것이다. 수동으로 날짜 및 시간을 입력하여 설정하는 방법을 포함하여 여러 기능이 있지만, 꼭 필요한 몇가지 경우만 알아보자 더 많은 것이 필요하면 멘페이지(man hwclock)를 활용하라.

하드웨어 시계 날짜 및 시간 확인

~] # hwclock
2014년 07월 10일 (목) 오후 09시 59분 19초  -0.536955 seconds

위와 같이 hwclock 명령어를 입력하면 현재 하드웨어 시간을 확인할 수 있다.

현재 시스템 시간을 하드웨어 시간으로 설정

~] # hwclock -w

위와 같이 입력하면 현재 시스템 시간을 하드웨어 시간으로 설정한다.

현재 하드웨어 시간을 시스템 시간으로 설정

~] # hwclock -s

위와 같이 입력하면 시스템 시간을 하드웨어 시간으로 설정한다. 필자는 이 설정을 리눅스를 사용하면서 사용해본 적이 없으나 참고로 적어보았다.

5.2.5. 시간대(Time Zone) 변경
CentOS 6이하 버전에서는 커멘드라인 환경에서 시간대를 변경하는 것은 조금 까다롭다. 필자는 미국에서 제공되는 리눅스서버를 설정해야 하는 경우가 있었는데 시간대를 Asia/Seoul로 설정해 달라는 요청이 있었다. 미국서버로 접속할 수 있는 유일한 방법은 SSH였으며 다음과 같은 방법으로 시간대를 변경할 수 있었다.
시간대에 대한 파일은 /etc/localtime이다. 이 파일에서 설정하는 것이 아니라 시간대에 해당하는 파일을 복사함으로 시간대를 변경할 수 있다.
우선 현재 시간대를 백업한다.

~] # cp /etc/localtime /etc/localtime.bk


변경하고자 하는 시간대 파일을 다음과 같이 /etc/localtime으로 복사한다. 시간대에 관련된 파일은 /usr/share/zoneinfo/ 디렉토리에 디렉토리 및 파일로 존재한다.

~] # cp /usr/share/zoneinfo/US/Hawaii /etc/localtime

하와이 시간대로 복사해 보자. (집필이 끝나면 가고 싶은 곳이 하와이라서..)
변경된 시간을 확인해 보자.

~] # date
2014. 07. 07. (월) 04:03:32 HST



5.2.6. rdate를 이용한 시간 동기화
앞에서 NTP를 이용한 시간동기화를 설정하였다. 여기서는 Time서버에서 시간을 가져와 설정하는 방법을 알아보자. 

~] #  rdate time.bora.net
rdate: [time.bora.net]  Mon Jul  7 23:15:17 2014

위 결과는 네트워크를 통해 시간정보를 가져오는 rdate 명령어를 사용하여 Time서버(time.bora.net)에서 시간을 가져온 것이다. 다음과 같이 가져온 시간을 현재 시간으로 설정할 수 있다.

~] #  rdate -s time.bora.net

"-s"옵션을 사용하여 시스템의 시간을 설정하였다. 
주기적으로 명령어를 실행시켜주는 cron을 이용한다면 매일 00시 00분에 시간을 동기화할 수 있다. 다음과 같이 설정해 보자. cron에 대해서는 다음에 자세히 다루도록 한다.

~] #  crontab -e

위 명령어를 실행하여 사용자 cron을 편집한다. vi 편집기가 실행되고 cron을 설정할 수 있다. 다음과 같이 입력한다. (만약, vi 편집기에 익숙하지 않다면 vi편집기 부분을 약간 공부하고 작업하기 바란다.)

00 00 * * * /usr/bin/rdate -s time.bora.net

위와 같이 입력하고 <ESC>키를 누르고, :wq를 입력하여 저장하고 vi 편집기를 빠져 나온다. 위 설정이 매일 00시 00분에 /usr/bin/rdate -s time.bora.net 명령어를 실행키는 것이다. 이는 매일 리눅스 시스템의 시간을 동기화 한다는 것이다.


 이상으로 15번째 강좌를 마무리 하겠습니다. 날짜 및 시간설정에서 timedatectl이라는 명령어로 통합되었습니다. 2014년 9월 3일(수) 도리(Doly)였습니다.^^ 
 
#################################################
* 본 강좌는 언제든 갱신될 수 있으며, 원글은 www.linux.co.kr 강좌>리눅스>Doly의 연재강좌 에서 수정됩니다. 
* 본 강좌의 일부 또는 전체를 인용하실 경우, 반드시 출처를 밝혀 주시기 바랍니다.

* 수정이력 :
 2014.09.03(수): 최초작성


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1840


반응형

'연구개발 > MYSQL' 카테고리의 다른 글

MRU LRU  (0) 2015.03.03
index hit  (0) 2015.03.02
mysql> show status  (0) 2015.02.26
Multi Rows Insert - ON DUPLICATE KEY UPDATE  (0) 2015.02.19
deterministic  (0) 2015.02.19

+ Recent posts