검증되지 않는 인증서, 뒤죽박죽인 로그 또는 한 시간 일찍 촉발된 작업은 애플리케이션을 쉽게 탓하게 만듭니다. 먼저 기계의 시계를 읽어보세요. VM 또는 systemd 서버에서 timedatectl은 수정 전에 시간대, NTP 서비스 및 동기화 상태를 보여줍니다.
목적은 세 가지 경우를 구분하는 것입니다: UTC가 잘못되었거나, 시간대가 잘못된 로컬 시간을 표시하거나, 네트워크 동기화가 더 이상 유지되지 않거나. 각 경우는 다른 조치를 요구합니다.
시간, 시간대 및 NTP 상태 읽기
먼저 로컬 시간, UTC 및 systemd가 관리하는 상태를 기록하십시오. 시간이거나 시간대를 변경해야 하는 경우 열린 세션에서 이 확인을 하세요.
date -Is
date -u -Is
timedatectl status
출력은 Local time, Universal time, RTC time, Time zone, System clock synchronized 및 NTP service를 포함하여 표시됩니다. UTC로 설정된 기계는 올바른 시점을 유지하면서 예상치 못한 로컬 시간을 표시할 수 있습니다. 따라서 date -u -Is를 알려진 기준 소스와 비교하여 시간대를 적재적소에 비난하십시오.
스크립트에서는 status의 출력을 파싱하지 않는 것이 좋습니다. 유용한 속성을 요청하세요:
timedatectl show -p Timezone -p LocalRTC -p NTP -p NTPSynchronized
시계를 이동하지 않고 시간대 변경하기
UTC가 일관되지만 로컬 시간이 그렇지 않은 경우, 먼저 예상되는 시간대가 존재하는지 확인하세요:
timedatectl list-timezones | grep -Fx 'Europe/Paris'
그런 다음 시간대를 적용하고 그 값을 다시 읽고 로컬 시간을 확인하세요:
sudo timedatectl set-timezone Europe/Paris
timedatectl show -p Timezone --value
date -Is
이 명령은 UTC의 표현을 변경하지만 시계를 재설정하지는 않습니다. 변경 후 타이머와 유지 관리 창을 확인하세요. 15 2 * * *와 같은 cron은 서비스의 로컬 시간을 따르지만, systemd 타이머는 자체적으로 시간대를 신고할 수 있습니다.
systemctl list-timers --all
systemd 타이머와 cron의 차이에 대한 가이드는 이 목록을 해석하는 데 도움이 됩니다. 시간대 변경으로 인해 원격 서버를 재부팅할 필요는 없습니다.
단일 동기화 클라이언트로 NTP 활성화하기
timedatectl set-ntp true를 사용하기 전에 이미 설치된 클라이언트를 확인하세요. 배포판에 따라 시계는 systemd-timesyncd, Chrony 또는 ntpd에 의해 관리될 수 있습니다.
systemctl list-unit-files | grep -E '^(systemd-timesyncd|chrony|chronyd|ntp).service'
systemctl is-active systemd-timesyncd
systemctl is-active chrony
systemctl is-active chronyd
비활성 서비스가 있다고 해서 모든 다른 서비스를 시작해야 한다는 의미는 아닙니다. NTP 클라이언트를 하나만 유지하세요. systemd-timesyncd를 사용하는 기계에서는 동기화를 활성화한 후 결과를 확인하세요:
sudo timedatectl set-ntp true
timedatectl show -p NTPSynchronized --value
timedatectl show-timesync --all
journalctl -u systemd-timesyncd -b --no-pager
속성 NTPSynchronized=yes는 systemd가 시계를 동기화된 것으로 간주한다는 것을 확인합니다. show-timesync는 또한 선택한 서버와 timesyncd에 대한 알려진 파라미터를 제공합니다. Chrony가 이미 시계를 관리하고 있다면 timesyncd를 재활성화하지 말고 Chrony 도구를 사용하세요. 리눅스에서 Chrony에 대한 기사가 이 경우를 다룹니다.
서버에서 수동 수정 피하기
로그가 지연된 것처럼 보인다고 해서 timedatectl set-time를 실행하지 마세요. 수동 점프는 인증서, Kerberos, 세션 만료, 데이터베이스 잠금 및 예약된 작업에 지장을 줄 수 있습니다.
리눅스가 하드웨어 시계를 해석하는 방법도 확인하세요:
timedatectl status
sudo hwclock --show
리눅스는 일반적으로 하드웨어 시계를 UTC로 유지합니다. RTC in local TZ가 yes인 경우, 특히 윈도우 이중 부팅을 사용하는 경우, UTC로 전환하기 전에 설정 정책을 확인하세요. 이 설정은 다음 부팅 시 시간을 이동할 수 있습니다.
수정 후 timedatectl status, 향후 실행 및 관련 서비스 로그의 최근 10분을 다시 읽어보세요. 시간, NTP 및 새로운 이벤트가 일치하면 애플리케이션은 보통 재부팅이 필요하지 않습니다.
systemd의 timedatectl 문서는 set-ntp의 동작과 설치된 버전에 따라 사용할 수 있는 속성을 설명합니다.