linux更改系统时间

测试环境和生产环境代码完全一致,但是生产环境代码碰到了问题,报错类似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 -sntpdNetwork 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 适用于需要持续、精确时间同步的生产环境,能够自动、平滑地调整系统时间。

上一篇:CMake函数:get_filename_component——从文件路径中提取特定组件


下一篇:C++四种类型转化