王俊杰2017 发表于 2024-9-11 18:36:25

Linux同步时间的方法,硬件时间同步

设置时区:timedatectl set-timezone Asia/Shanghai
设置硬件时间:hwclock --set --date="05/24/23 15:33"
查看硬件时间:hwclock--show
设置系统时间与硬件时间同步:hwclock --systohc
查看系统时间date


方法一:非生产时使用
第一种是在所有机器上,使用连接工具的并发命令功能,同时运行修改时间命令,比如执行date -s “2019-05-25 17:00:00” ,这个方法适合自己测试环境用

第二种就是安装了一个ntpdate命令,然后同步时间的master是一个所有人都可以用的master

安装工具
yum -y install ntp ntpdate
同步网络时间
ntpdate cn.pool.ntp.org

方法二:NTP服务
使用ntpd server,为多台机器同步时间,这里以三台机器为例

第一步:在三台机器上运行ntpdate命令,验证是否安装有ntpdate,如果没有运行yum -y install ntp安装该服务

第二步:选出一台机器,做master,编辑它的/etc/ntp.conf文件

进入配置文件之后,首先将配置文件中所有的restrict开头的行注释掉,如下面这种

其后另写一条生效的服务配置

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
格式:restrict 允许的ip范围一般默认就行 mask 允许同步的网段子网掩码 nomodify notrap

将所有server开头的行全部注释,添加如下的新信息

server 127.127.1.0
fudge 127.127.1.0 stratum 10

第三步:master启动ntp服务并开机自启

service ntpd restart
chkconfig ntpd on

第四步:所有子节点运行命令,同步master的时间。

ntpdatemaster节点ip

如果子节点运行命令之后,如果提示no server那就等两分钟左右在在运行
如果提示`the NTP socket is in use, exiting`说明当前子节点的ntp服务启动了,你要关掉它

第五步:让集群自己同步时间,有两种方式

第一种方式:通过crontab来完成同步,推荐这种,容易控制时间同步频率

所有子节点配置定时任务,半分钟同步一次,命令如下:
crontab -e

上面的命令会打开linux自带的定时任务列表在其中添加如下一条信息:
30 * * * * /usr/sbin/ntpdate master的ip或域名 >> /root/ntpdate.log 2>&1

后期需要观察一下/root/ntpdate.log中有没有定时同步时间的运行日志

说明一下:30 * * * * 代表了五个时间占位符,上面写的代表30分钟同步一次,你可以自己改,五个站位符号按顺序分别为分、时、日、月、天

*    *    *    *    *
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12)
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 一小时中的某分钟 (0 - 59)

一般情况下直接指定数字就够了,但是它可以指定表达式来完成更多变的事件指定,表达式很简单,网上搜索案例就行了

第二种方式:依赖于ntp服务

所有子节点同样配置/etc/ntp.conf文件,不过不需要master那样麻烦,只需要注释所有restrict和server配置,添加“server master节点ip”即可,最后保证所有节点启动并设置开机自启ntp服务

但是这个方法推荐,有时候不一定灵不灵,而且无法灵活的控制频率
页: [1]
查看完整版本: Linux同步时间的方法,硬件时间同步