linux服务器时间同步方案
timedatectl 是一个用于管理系统时间和日期设置的命令行工具,它通常用于Linux系统中。通过 timedatectl 命令,可以查看和修改系统的时钟和时区设置,以及配置系统时间同步方式等。
先使用timedatectl命令查看时区
[root@nginx ~]# timedatectl
.....
Time zone: America/New_York (EST, -0500)
#修改为上海时区
timedatectl set-timezone "Asia/Shanghai"
修改系统时间的命令
方式一:使用date命令修改时间:
[root@nginx ~]# date -s "2024-03-09 12:00:00"
Sat Mar 9 12:00:00 EST 2024
[root@nginx ~]# timedatectl
Local time: Sat 2024-03-09 12:00:04 EST
Universal time: Sat 2024-03-09 17:00:04 UTC
RTC time: Sun 2024-03-03 18:59:06
#通过date -s修改时间,不加上 hwclock -w去同步硬件时间,则会下次重启后又恢复到硬件时间
#所以同步date -s 修改系统时间需要加上 hwclock -w
[root@nginx ~]# date -s "2024-03-09 12:00:00" && hwclock -w
方式二:使用timedatectl命令修改时间:
# 2. 通过timedate set-time 命令设置,它会自动同步硬件时间
[root@nginx ~]# timedatectl set-time "2024-03-03 13:43:00"
tdatFailed to set time: Automatic time synchronization is enabled
该错误表明自动时间同步已启用,因此无法手动设置时间。
使用以下命令禁用自动时间同步:
timedatectl set-ntp false
方式三:使用ntpdate命令修改时间:
ntpdate -u ntp.aliyun.com && hwclock -w
时间同步方案
方案一:编写定时任务
#加入开机自动运行netdate命令
echo "/usr/sbin/ntpdate -s ntp.aliyun.com" >> /etc/rc.local
#授予脚本可执行权限
sudo chmod +x /etc/rc.local
#设置定时任务每隔二十分钟同步一次时间:
echo "*/20 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null &" >> /var/spool/cron/root
方案二:使用chrony服务实现时间同步
安装chrony服务
yum install -y chrony
开启服务
systemctl enable --now chronyd
编写配置文件,修改两个地方:
[root@nginx ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server s1a.time.edu.cn iburst
server ntp.aliyun.com iburst
# Allow NTP client access from local network.
allow 192.168.0.0/16
查看时间同步状态
timedatectl status
开启网络时间同步
timedatectl set-ntp true
查看 ntp_servers
chronyc sources -v
强制同步下系统时钟
chronyc -a makestep
#NTP与chrony不能同时存在,只能用其中一个,并将另一个mask掉。
总结
Chrony 更适合用于长时间运行的系统,并且能够提供更精确、更稳定的时间同步服务,而 ntpdate 则更适合用于临时或手动触发的时间同步操作。
关注我:分享更多运维知识