답변:
Serverfault.com 에서도 비슷한 질문이 제기되었습니다 . 이것이 답이었습니다.
hwclock
RHEL 4.6 의 매뉴얼 페이지에서 :
This mode (we'll call it "11 minute mode") is off until something turns it on. The ntp
daemon xntpd is one thing that turns it on. You can turn it off by running
anything, including hwclock --hctosys, that sets the System Time the old fashioned way.
To see if it is on or off, use the command adjtimex --print and look at the value of
"status". If the "64" bit of this number (expressed in binary) equal to 0, 11 minute mode
is on. Otherwise, it is off.
그래서 당신이 달리기 때문에 hwclock --set
당신은 그것을 껐을 것입니다. 동일한 토큰으로의 출력 adjtimex --print
을 확인할 수 있습니다.
직접 확인하십시오 (다음 스크립트는 현재의 "시간 상태"를 거의 실시간으로 표시하면서 갑작스러운 값 변경을 기록합니다)
#!/bin/sh
set -eu
get_time() {
local line="$1"
timedatectl \
| sed -nE $line'p' \
| sed -E 's/.* ([0-9]+):([0-9]+):([0-9]+).*/\1\2\3/'
}
get_time_status() {
adjtimex --print \
| grep -F status \
| awk '{print "obase=2;" $2}' \
| bc
}
num_diff() {
local a="$1" b="$2"
echo "ah = ${a:0:2}; am = ${a:2:2}; as = ${a:4:2}
bh = ${b:0:2}; bm = ${b:2:2}; bs = ${b:4:2}
a = ah * 60 * 60 + am * 60 + as
b = bh * 60 * 60 + bm * 60 + bs
if (a > b) a - b else b - a" | bc
}
print_line() {
local f1="$1" f2="$2"
printf "%20s %-$(($(tput cols) - 21))s\n" "$f1" "$f2"
}
localt=
universalt=
rtct=
ntp_enabled=
ntp_synchronized=
time_status=
localt_prv="$(get_time 1)"
universalt_prv="$(get_time 2)"
rtct_prv="$(get_time 3)"
ntp_enabled_prv="$(timedatectl | grep -E 'NTP enabled' | awk '{print $3}')"
ntp_synchronized_prv="$(timedatectl | grep -E 'NTP synchronized' | awk '{print $3}')"
time_status_prv="$(get_time_status)"
while true; do
localt="$(get_time 1)"
universalt="$(get_time 2)"
rtct="$(get_time 3)"
ntp_enabled="$(timedatectl | grep -E 'NTP enabled' | awk '{print $3}')"
ntp_synchronized="$(timedatectl | grep -E 'NTP synchronized' | awk '{print $3}')"
time_status="$(get_time_status)"
if [ "$(num_diff $localt $localt_prv)" -gt 5 ]; then
print_line "[$(date +%H:%M:%S)]" "localt: $localt_prv -> $localt"
fi
if [ "$(num_diff $universalt $universalt_prv)" -gt 5 ]; then
print_line "[$(date +%H:%M:%S)]" "universalt: $universalt_prv -> $universalt"
fi
if [ "$(num_diff $rtct $rtct_prv)" -gt 5 ]; then
print_line "[$(date +%H:%M:%S)]" "rtct: $rtct_prv -> $rtct"
fi
if [ "$ntp_enabled" != "$ntp_enabled_prv" ]; then
print_line "[$(date +%H:%M:%S)]" "ntp_enabled: $ntp_enabled_prv -> $ntp_enabled"
fi
if [ "$ntp_synchronized" != "$ntp_synchronized_prv" ]; then
print_line "[$(date +%H:%M:%S)]" "ntp_synchronized: $ntp_synchronized_prv -> $ntp_synchronized"
fi
if [ "$time_status" != "$time_status_prv" ]; then
print_line "[$(date +%H:%M:%S)]" "time_status: $time_status_prv -> $time_status"
fi
print_line local: "$localt"
print_line universal: "$universalt"
print_line rtc: "$rtct"
print_line 'NTP enabled:' "$ntp_enabled"
print_line 'NTP synchronized:' "$ntp_synchronized"
print_line 'time status:' "$time_status"
sleep 1
localt_prv="$localt"
universalt_prv="$universalt"
rtct_prv="$rtct"
ntp_enabled_prv="$ntp_enabled"
ntp_synchronized_prv="$ntp_synchronized"
time_status_prv="$time_status"
printf '\033[6A'
done