1. 问题记录
#时间同步配置指南
#问题描述
错误提示:`“the NTP socket is in use, exiting”` 表示 NTP 套接字正在被使用,通常是因为系统中的 `ntpd` 服务已经在运行,而 `ntpdate` 命令和 `ntpd` 服务不能同时使用端口 123。
#解决步骤
#1. 停止 `ntpd` 服务
在执行 `ntpdate` 命令之前,确保 `ntpd` 服务已经停止。
- 对于 CentOS 7 及之前版本:
sudo service ntpd stop
- 对于 CentOS 8 及之后版本:
sudo systemctl stop ntpd
# 2. 使用 `ntpdate` 进行时间同步
执行 `ntpdate` 进行手动时间同步。以下是一些常用的 NTP 服务器地址
sudo ntpdate pool.ntp.org
sudo ntpdate time.nist.gov
# 3. 禁用 `ntpd` 服务的自动启动
如果不希望 `ntpd` 服务在系统启动时自动启动,可以禁用其开机自启:
- 对于 CentOS 8 及之后版本:
sudo systemctl disable ntpd
# 4. 设置计划任务(Crontab)
如果需要定期同步时间,可以将 `ntpdate` 命令加入到计划任务中。编辑 crontab 文件:
sudo crontab -e
在 crontab 文件中添加一行,例如每天凌晨 2 点同步时间:
0 2 * * * /usr/sbin/ntpdate pool.ntp.org
## 现代时间同步服务
为了实现持续的时间同步,建议使用以下现代时间同步服务:
### 1. 使用 `chrony`
`chrony` 是一种现代且高效的时间同步服务。安装和配置 `chrony` 的步骤如下:
- 安装 `chrony`:
- 对于 CentOS 7:
```bash
sudo yum install chrony
```
- 对于 CentOS 8:
```bash
sudo dnf install chrony
```
-- 启动 `chronyd` 服务:
```bash
sudo systemctl start chronyd
- 设置
chronyd
开机自启:sudo systemctl enable chronyd
2. 使用 systemd-timesyncd
systemd-timesyncd
是 systemd 的一部分,提供简单的时间同步功能。启用它的方法如下:
sudo systemctl start systemd-timesyncd
sudo systemctl enable systemd-timesyncd
排错提示
- 网络问题:确保防火墙设置允许 123 端口的流量。
- NTP 服务器可用性:确保所使用的 NTP 服务器地址可访问,有时可能需要选择不同的服务器或使用内部网络的 NTP 服务器。