玩linux系统的人应该知道这个事情,那就是Linux系统时间有两个,一个是硬件时间,即BIOS时间;另一个是系统时间,即linux系统Kernel(内核程序)时间。当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。而某些时候,我们会发现系统时钟和硬件时钟不一致,此时需要进行时间同步。
一、设置Linux系统的时区
1.查看时间或者时区
#查看时间
[root@localhost ~]# date
Wed Aug 14 08:08:05 EDT 2019 #EDT 北美东部夏令时间,不是中国所在的东八区
或者
#查看时区 东八区样式:CST +0800
[root@localhost ~]# date +"%Z %z"
EDT -0400
2.修改为东八区的亚洲/上海。
# 覆盖/etc/sysconfig/clock,修改为亚洲/上海时区
[root@localhost ~]# echo "Asia/Shanghai" > /etc/sysconfig/clock
# 删除原有的本地时间文件
[root@localhost ~]# rm -f /etc/localtime
# 链接上海文件
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#再次查看时区
[root@localhost ~]# date +"%Z %z"
CST +0800
二、利用定时器crontab来定时进行时间同步
1. 查看是否安装了ntp服务,
[root@localhost ~]# rpm -qa | grep ntp
[root@localhost ~]#
没有任何输出,说明没有安装,此时应该先安装:yum -y install ntp.x86_64。如果有,直接去2。
[root@localhost ~]# yum -y install ntp.x86_64
2. 编辑root用户的定时任务
[root@localhost ~]# crontab -u root -e
3. 设置每分钟同步一次(设置一分钟只是为了测试)
前五列的*,分别表示:分钟 小时 日 月 周
*/1 :写在分钟的位置,表示频率,每一分钟的含义
第六列:表示要执行的命令:ntpdate命令要写绝对路径:/usr/sbin/ntpdate
-u 用于指定时间服务器的一个参数
time.windows.com :是微软时间服务器
;两个命令的分隔符
/sbin/hwclock -w :将时间写入到bios中。
到这里直接去看4。同步成功后,再回来设置实际工作:
0 6 1,10,20 1-12 0,3,6 /usr/sbin/ntpdate -u time.windows.com;/sbin/hwclock -w
0:表示0分。 范围0~59.
6:表示6点。 范围0~23
1,10,20:表示1号,10号,20号。范围1~31
1-12:表示每个月。范围1~12
0,3,6:表示周日,周四,周日。范围0-6,0表示周日注意:逗号分开表示集合。-连接表示区间
4. 一分钟左右,再次查看时间: 成功同步。哦耶
[root@localhost ~]# date
Wed Aug 14 12:32:42 CST 2019
-----------------------------------------------如有疑问,敬请留意----------------------------------------------------