同步时间
程序员文章站
2022-05-31 09:29:38
...
系统时间与硬件时间
一台计算机有两个时钟,一是硬件时间时钟(RTC,Real Time Clock,又实时时钟),二是系统时钟(System Clock);
1 概念
硬件时钟是嵌在主板上的特殊电路,平时关机后还可计算时间;
系统时钟是操作系统的kernel用以计算时间的时钟;
2 工作原理
在Linux系统下,系统时间在开机时会和硬件时间同步,随后各自独立运行;
默认情况下,系统时间和硬件时间不会自动同步;
硬件时间运行依靠BIOS电池,系统时间运行依靠CPU tick,这也是系统时间长时间运行会产生时间偏差的原因;
同步系统时间和硬件时间
查看系统时间:
date
, 查看硬件时间clock
或者hwclock
设置系统时间
date -s “20170522 14:29:25” #或
date -s “2017-05-22 14:29:25” # 或
date -s “14:29:25 20170522” # 或
date -s “14:29:25 2017-05-22” # 或
设置硬件时间
hwclock --set --date=“2017-05-22 14:29:25”; # 或
clock --set --date “2017-05-22 14:29:25”;
** 系统时间同步为硬件时间 **
hwclock -s
或者
hwclock --systohc
** 硬件时间同步为系统时间 **
hwclock -w
或者
hwclock --hctosys
同步系统时间为网络时间
ntpdate -u ntp.api.bz
我写了个脚本,定期同步系统时间硬件时间
/opt/syncTime.sh
#!/bin/bash
# chkconfig: 2345 90 80
ntpServer=(
ntp.api.bz
ntp1.aliyun.com
)
serverNum=${#ntpServer[*]}
for ((i=0;i<=$serverNum;i++));do
echo "同步服务器: ${ntpServer[$i]} 中..."
/usr/sbin/ntpdate -u ${ntpServer[$i]} >> syncTime.log
if [ $? -eq 0 ];then
echo "同步服务器: ${ntpServer[$i]} 成功";
break
else
echo "同步服务器: ${ntpServer[$i]} 失败"
fi
done
#将系统时间同步到硬件时间
hwclock -w
再放到cron定时任务里
# crontab -e
*/2 * * * * /opt/syncTime.sh
下一篇: 时间同步
推荐阅读