测试环境和生产环境代码完全一致,但是生产环境代码碰到了问题,报错类似time expired,猜测和系统时间有关系,修改之后确实好了。测试如下:
参考:centos7时间同步教程_centos7 时间同步,如果遇到问题,通常是因为系统无法访问 CentOS 的镜像源,可能是由于网络问题或镜像源本身的问题。可以尝试以下几种方法来解决问题:
1. 检查网络连接
首先确认网络连接是正常的。可以尝试 ping 一些外部地址,看看是否有网络连接问题。
ping -c 4 google.com
如果 ping 不通,说明网络连接有问题,需要先解决网络问题。
2. 更换镜像源
如果网络连接正常,但仍然无法访问默认的 CentOS 镜像源,可以尝试更换为其他可用的镜像源。例如,可以使用阿里云、腾讯云或其他国内镜像源。
修改镜像源步骤:
备份现有的 yum 配置文件:
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新的镜像源配置文件:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
实际操作
# 显示当前时间为27分,强行改为10
# 使用ntpdate将时间调整为系统时间,改完后29
(base) [root@VM-16-6-centos ~]# date
Fri Oct 18 00:27:19 CST 2024
(base) [root@VM-16-6-centos ~]# date -s 00:10
Fri Oct 18 00:10:00 CST 2024
(base) [root@VM-16-6-centos ~]# date
Fri Oct 18 00:10:02 CST 2024
(base) [root@VM-16-6-centos ~]# sudo yum install ntpdate
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
os | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
Package ntpdate-4.2.6p5-29.el7.centos.2.x86_64 already installed and latest version
Nothing to do
(base) [root@VM-16-6-centos ~]# sudo ntpdate pool.ntp.org
18 Oct 00:10:38 ntpdate[23142]: the NTP socket is in use, exiting
(base) [root@VM-16-6-centos ~]# sudo systemctl stop ntpd
(base) [root@VM-16-6-centos ~]# sudo ntpdate pool.ntp.org
18 Oct 00:28:52 ntpdate[23240]: step time server 202.112.29.82 offset 1053.611749 sec
(base) [root@VM-16-6-centos ~]# sudo systemctl start ntpd
(base) [root@VM-16-6-centos ~]# date
Fri Oct 18 00:29:11 CST 2024
# 停止 ntpd 服务
sudo systemctl stop ntpd
# 使用 ntpdate 同步时间
sudo ntpdate pool.ntp.org
# 重新启动 ntpd 服务
sudo systemctl start ntpd
关于修改系统时间总结如下:
date -s
和 ntpd
(Network Time Protocol Daemon)在设置和同步系统时间方面有一些重要的区别。下面是它们之间的主要区别:
1. 即时性 vs 持续同步
-
date -s
:-
即时性:
date -s
是一个一次性的命令,用于立即设置系统时间。它不会持续同步时间。 - 手动操作: 需要手动执行命令来设置时间,适用于偶尔需要手动校准时间的场景。
-
即时性:
-
ntpd
:-
持续同步:
ntpd
是一个后台守护进程,会持续与网络时间服务器通信,确保系统时间始终准确。 -
自动化: 无需手动干预,
ntpd
会自动调整系统时间,保持与网络时间服务器的一致性。
-
持续同步:
2. 时间调整方式
-
date -s
:-
硬调整:
date -s
会立即将系统时间设置为指定的时间,这可能导致系统时间突然跳变。 - 潜在问题: 对于某些对时间敏感的应用程序(如数据库、定时任务等),时间的突然跳变可能会引起问题。
-
硬调整:
-
ntpd
:-
平滑调整:
ntpd
通过逐步调整系统时间,使其逐渐与网络时间服务器同步,避免时间的突然跳变。 - 稳定性: 这种平滑调整的方式对系统的影响较小,适合在生产环境中使用。
-
平滑调整:
3. 使用场景
-
date -s
:- 临时校准: 适用于需要临时校准系统时间的场景,例如在没有网络连接的情况下手动设置时间。
- 测试环境: 在测试环境中,有时需要手动设置特定的时间点进行测试。
-
ntpd
:- 生产环境: 适用于需要高精度时间同步的生产环境,确保系统时间始终准确。
-
多台机器同步: 在分布式系统中,
ntpd
可以确保多台机器的时间保持一致。
4. 配置和管理
-
date -s
:- 简单: 使用命令行直接设置时间,不需要复杂的配置。
- 一次性: 设置完时间后,不会继续同步。
-
ntpd
:-
复杂: 需要配置文件(通常是
/etc/ntp.conf
),指定时间服务器和其他参数。 -
持久化: 配置完成后,
ntpd
会持续运行并保持时间同步。
-
复杂: 需要配置文件(通常是
总结
-
date -s
适用于需要立即手动设置时间的场景,但不适合长期时间同步。 -
ntpd
适用于需要持续、精确时间同步的生产环境,能够自动、平滑地调整系统时间。