Linux 서버(Amazon Linux 2)를 처음부터 시작했습니다.
저는 도쿄 지역에 있고 시간대 정보를 이렇게 변경했습니다.
ll /etc/localtime
# lrwxrwxrwx 1 root root 25 Feb 22 10:11 /etc/localtime -> ../usr/share/zoneinfo/UTC
# backup
sudo cp -p /etc/localtime /etc/localtime.org
# change timezone
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ll /etc/localtime
# lrwxrwxrwx 1 root root 30 Mar 10 22:06 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
이제 다음 사항이 영향을 받으니 UTC보다 9시간 빠르네요. 제겐 충분할 것 같습니다.
- 'date' 명령의 결과
- 크론 작업 실행 시간
- 데몬녹화시간
그런데 구글에서 검색해보니 하드웨어 시계도 바꿔야 한다는 글이 몇 개 발견됐습니다.
# default
cat /etc/sysconfig/clock
# ZONE="UTC"
# UTC=true
이 파일을 수정하는 것이 더 낫습니까?
그렇다면 어떻게 해야 할까요? 무엇이 영향을 받나요?
답변1
당신이 찾은 기사는 "잘못"입니다. Linux 시스템에서는 관례에 따라 하드웨어 시계를 통합 시간대(즉, UTC)로 유지하고 소프트웨어는 필요에 따라 하드웨어 시간을 현지 시간대로 변환합니다.
주변의 "오류" "
는 이것이 단지 관례이기 때문입니다. 이것도 할 수 있지만 아무런 이점이 없습니다. 대신 현지 시간대로 설정되면 하드웨어 시계는 일광 절약 시간을 따르는 등의 작업을 수행해야 합니다. 일반적으로 이는 하드웨어 시계를 1년에 두 번 변경해야 함을 의미하므로 원하는 것이 아닙니다.
음, 응. 시스템 시계를 UTC로 유지합니다. AWS에 대해서는 잘 모르지만 가상 머신이 하드웨어 시계에서 제공하는 실제 시간조차 변경하지 않는 경우가 많습니다.
답변2
아마존에만 국한되지 않습니다. Amazon의 하드웨어 시계가 정확한지 의심스럽습니다. 현지 OS 시간대만 처리해야 합니다. 그러나 실제(또는 시뮬레이션) 하드웨어 시계에 대한 모든 정보를 제공합니다.
- 실제 세계의 UTC 시간을 확인하세요(확실하지 않은 경우:https://www.timeanddate.com/worldclock/timezone/utc)
- 하드웨어가 클럭킹 중이라고 생각하는 것을 확인하십시오.
sudo TZ=UTC hwclock --get
- 운영 체제에서 생각하는 시간(UTC)을 확인하세요.
date -u
1, 2, 3단계의 시간은 서로 일치해야 합니다. OS가 잘못된 경우(3단계), ntpdate pool.ntp.org
hwclock이 잘못된 경우(2단계), sudo TZ=UTC hwclock -w -u
(EC2의 에뮬레이트된 하드웨어 시계가 이를 변경할 수 있는지 여부는 흥미로운 질문입니다. 놀랍게도 가능합니다.)
이제 하드웨어 시계가 있는 시간대를 확인할 수 있습니다.
- 하드웨어 시간대가 UTC인 것처럼 하드웨어 시계를 확인하세요.
sudo TZ=UTC hwclock -u --get
대략적인 실제 UTC 시계가 반환되면 하드웨어 시계는 UTC를 사용하고 있는 것입니다. 다른 값을 반환하는 경우 현지 시계의 시간대를 사용하고 있는 것입니다. 내 편견은 이것이 결코 좋은 생각이 아니지만 일부 타사 OS가 이에 동의하지 않을 수도 있다는 것입니다(이중 부팅을 수행하는 경우 EC2에서는 발생하지 않음).
이제 마침내 로그를 볼 때 해당 로그가 실제로 발생한 시기를 확인할 수 있도록 운영 체제의 시간대를 설정할 준비가 되었습니다. UTC를 선택하고 최대한의 온전함을 위해 공통된 글로벌 시간을 가질 수 있습니다. 서버의 로컬 시간대를 선택할 수 있으며, 이로 인해 다른 가용 영역의 로그를 비교하기 전에 변환해야 합니다. 시간대를 선택할 수 있습니다(다른 지역에 있는 동료를 짜증나게 할 수도 있습니다). 아래 예제 명령에서는 UTC를 선택했습니다.
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
이 시점에서 date
시간은 선택한 시간대로 인쇄되어야 합니다.
/etc/sysconfig/clock은 부팅 시 (/etc/localtime에서) 심볼릭 링크를 다시 생성하는 방법이지만, 대부분의 OS 공급업체는 이에 대해 더 잘 생각했고 더 이상 그렇게 하지 않습니다. /etc/sysconfig/clock을 사용하지 않는 것이 좋습니다. 또는 존재하는 경우 올바르게 설정되었는지 확인하고 재부팅 후 /etc/localtime이 여전히 올바르게 설정되어 있는지 확인하세요.
답변3
어떤 시점에서는 컴퓨터 외부의 서버와 통신하게 되며, 이때 일반적으로 서버와의 시간에 동의해야 합니다. 이는 단지 혼란을 피하기 위한 것일 수도 있지만 일반적으로 재생 공격을 방지하기 위한 보안상의 이유로 수행됩니다. 따라서 컴퓨터는 UTC 시간을 알아야 합니다. 그렇지 않으면 문제가 발생할 수 있습니다.
하드웨어 시계는 실제 시간을 최대한 정확하게 반영해야 합니다. 하드웨어 시계를 비교해 보면 귀하는 런던에 있고 저는 로스앤젤레스에 있으므로 하드웨어 시계는 동일해야 합니다. 우리의 현지 시간은 분명히 다를 것입니다.