同步时间

系统时间与硬件时间

一台计算机有两个时钟,一是硬件时间时钟(RTC,Real Time Clock,又实时时钟),二是系统时钟(System Clock);

1 概念

硬件时钟是嵌在主板上的特殊电路,平时关机后还可计算时间;

系统时钟是操作系统的kernel用以计算时间的时钟;

2 工作原理

在Linux系统下,系统时间在开机时会和硬件时间同步,随后各自独立运行;

默认情况下,系统时间和硬件时间不会自动同步;

硬件时间运行依靠BIOS电池,系统时间运行依靠CPU tick,这也是系统时间长时间运行会产生时间偏差的原因;

同步系统时间和硬件时间

查看系统时间: date , 查看硬件时间 clock 或者 hwclock
同步时间_第1张图片
设置系统时间
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)