欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

同步时间

程序员文章站 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
相关标签: linux