시간대와 시간 관리: timedatectl 명령어
1. Linux에서 시간 다루기
왜 시간을 올바르게 설정하는 것이 중요할까?
시스템 로그에서 오류를 추적하려고 하는데 로그의 시간이 실제 시간과 맞지 않는 상황을 상상해봐. 아니면, 더 나쁘게는, 국제적인 회사 내에서 서버가 사용자마다 다른 시간을 표시한다면? 시간을 정확히 설정하는 건 단순한 편의가 아니라, 시스템 작동, 파일 동기화, 보안 유지(SSL 인증서는 시간에 의존함), 그리고 작업 조정을 위해 매우 중요한 거야.
Linux에서 시간은 두 가지 형태로 표시될 수 있어:
- 시스템 시간 (System Time) — 운영 체제가 자신의 작업에 사용하는 시간이야.
- 하드웨어 시간 (Hardware Time) — 하드웨어(BIOS/UEFI) 수준에서 저장되는 시간이야.
우리는 timedatectl 도구를 사용해서 시스템 시간을 다룰 거야.
2. timedatectl 명령어 기본
timedatectl — 이 명령어 유틸리티는 시간을 관리하기 위한 편리한 인터페이스를 제공해. 이걸로 다음과 같은 작업을 할 수 있어:
- 현재 시간 및 시간대 설정 확인하기;
- 시스템 및 하드웨어 시간 설정하기;
- 시간대 설정하기;
- NTP(Network Time Protocol)을 사용한 시간 동기화 활성화 및 비활성화.
현재 시간 확인
가장 간단한 것부터 시작해 보자. 현재 시간과 설정을 확인하려면 다음 명령어를 실행해:
timedatectl
출력 예제:
Local time: Tue 2023-10-31 12:34:56 MSK
Universal time: Tue 2023-10-31 09:34:56 UTC
RTC time: Tue 2023-10-31 09:34:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
필드 설명:
- Local time: 로컬(시스템) 시간.
- Universal time: UTC 형식의 시간(국제 표준시).
- RTC time: 하드웨어 시간(BIOS/UEFI 수준).
- Time zone: 현재 시간대.
- System clock synchronized: NTP를 통해 시간이 동기화되었는지 여부.
- NTP service: 시간 동기화 서비스가 활성화되었는지 여부.
- RTC in local TZ: 하드웨어 시간이 로컬 시간대와 일치하는지 여부.
시간대 설정 및 변경
가끔은 이사를 하거나 프로젝트 요구 사항이 변경되면 시간대를 바꿔야 할 수도 있어. 예를 들어 서버가 뉴욕에 설정되어 있었지만, 이제는 모스크바의 사용자들을 지원해야 할 경우. 시간대는 /usr/share/zoneinfo 디렉토리에서 찾을 수 있어.
사용 가능한 시간대를 보려면 다음을 실행해:
timedatectl list-timezones
출력은 다음과 같은 큰 목록이 될 거야:
Africa/Abidjan
America/New_York
Asia/Tokyo
Europe/Moscow
새로운 시간대를 설정하려면 다음 명령어를 사용해:
sudo timedatectl set-timezone Europe/Moscow
시간대가 변경되었는지 확인하려면:
timedatectl
실습 과제
- 서버의 현재 시간대를 찾아봐.
- 시간대를 UTC로 변경해봐.
- 시간대를 다시 로컬 시간대로 되돌려봐.
3. 시간 수동 설정
요즘 서버는 보통 NTP를 통해 시간을 동기화하지만, 인터넷에 접속할 수 없는 격리된 네트워크에 있는 경우에는 수동으로 시간을 설정해야 할 때도 있어.
먼저 현재 시스템 시간을 확인할 수 있어:
date
새로운 시간을 설정하려면 다음 명령어를 사용해봐:
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
예를 들어, 2023년 11월 1일 12:00로 시간을 설정하려면:
sudo timedatectl set-time "2023-11-01 12:00:00"
그 다음, 결과를 다시 확인해봐:
timedatectl
하드웨어 시간 설정
하드웨어 시간 (RTC — Real-Time Clock 라고도 불림)은 BIOS/UEFI 수준에서 관리돼. 하드웨어 시간이 시스템 시간과 동기화되지 않으면 재부팅 시 문제가 발생할 수 있어. 동기화를 하려면 다음 명령어를 실행하면 돼:
sudo hwclock --systohc
이 명령어는 하드웨어 시간을 시스템 시간에 맞게 설정할 거야.
반대로, (시스템 시간을 하드웨어 시간에 맞추고 싶다면) 다음을 사용하면 돼:
sudo hwclock --hctosys
4. NTP를 통한 시간 동기화
NTP를 통한 시간 동기화는 원격 서버를 사용해 시간을 자동으로 최신 상태로 유지하는 방법이야. 대부분의 최신 Linux 배포판에서는 NTP가 기본적으로 활성화되어 있어.
NTP 설정 확인
다음을 실행해봐:
timedatectl status
NTP가 비활성화되어 있으면 (NTP service 라인에 inactive라고 표시됨), 이를 활성화하려면 다음을 실행해:
sudo timedatectl set-ntp true
NTP를 비활성화하려면 다음을 실행해:
sudo timedatectl set-ntp false
NTP가 작동하지 않으면 관련 서비스가 활성 상태인지 확인해야 해. 예를 들어, systemd-timesyncd를 사용하는 시스템에서는 서비스가 활성 상태인지 확인해봐:
sudo systemctl status systemd-timesyncd
5. 실습 과제
문제
- 시스템의 시간대를 UTC로 설정하세요.
- 시스템 시간을 2023년 11월 1일 12:00:00으로 수동으로 설정하세요.
- NTP를 통한 시간 동기화를 활성화하세요.
확인
과제를 완료한 후 다음을 확인하세요:
- 시스템 시간이 설정된 매개변수와 일치하는지.
- 시간대가 UTC로 변경되었는지.
- NTP 서비스가 활성화되었는지.
6. 흔한 실수와 주의점
"RTC in local TZ: no"가 로컬 시간대와 일치하지 않음. 많은 시스템은 다른 시간대에서 작업 시 혼란을 피하기 위해 하드웨어 시간을 UTC로 사용하기를 선호해. 이건 오류가 아니고, 그냥 선호도야.
시간 변경 시 접근 권한 오류.
timedatectl명령어는 superuser 권한이 필요해.sudo를 사용하고 있는지 확인해.NTP 동기화 활성화 안 됨. 서버에서 NTP 서비스가 작동 중인지 확인해봐. 예를 들어,
systemd-timesyncd를 위해 아래 명령을 실행해:sudo systemctl start systemd-timesyncd
실제 작업에서 왜 필요할까?
- 서버 관리. 시간 및 시간대 설정은 로그의 정상 작동, 데이터 동기화, 작업 일정 계획에 중요해.
- 국제 프로젝트 작업. 표준으로 UTC를 사용하면 다른 시간대의 클라이언트와 작업할 때 혼선을 방지할 수 있어.
- 면접 및 인증.
timedatectl과 시간 관리에 대한 질문은 시스템 관리자 직책 면접이나 시험에서 자주 등장해.
이제 너는 Linux에서 시간 관리를 마치 데드라인을 다루는 것처럼 자신감 있고 정확하며 예상치 못한 일이 없이 할 수 있을 거야.
GO TO FULL VERSION