# 获取ntpd镜像
docker pull seznam/ntpd
# 启动ntpd服务
docker run -d --net=host --name ntpd seznam/ntpd
# 进入容器内部,修改配置文件
docker exec -it ntpd bash
vi /etc/ntp.conf
# 添加时间服务器地址,如果内网有时间服务器,填写改地址,如果没有,添加下面的地址,同步本地时间
restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify
restrict 10.10.10.0 mask 255.255.255.0 nomodify
#server 0.pool.ntp.org
#server 1.pool.ntp.org
#server 2.pool.ntp.org
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
# 重启容器
docker restart ntpd
# 同步客户机时间
ntpdate x.x.x.x (等待时间服务器10分钟后,执行这里)
# 设置定时任务
crontab -e
00 2 * * * ntpdate x.x.x.x (每天凌晨2点执行此命令)
注意事项
1.mac和window 不支持--net=host,所以需要在linux服务器上搭建
2.mac ntp同步命令
sudo sntp -sS x.x.x.x
3.可以使用ntpdate -d x.x.x.x 调试
4.如果出现 the NTP socket is in use, exiting错误
您收到此错误消息的原因是由于 xntpd 已经绑定到了该 Socket。运行 ntpdate 时,它会首先进行广播,然后侦听端口 123。如果 xntpd 正在运行,而有一个进程已经在侦听该端口了,则会使 ntpdate 无法在上面运行。运行下列命令,即可找出 xntpd 的 PID
[root@123]# ps -ef|grep xntpd
root 124185 6192 0 15:49 pts/1 00:00:00 grep xntpd
可惜没有找到pid。
使用lsof –i:123
没有lsof命令的话:yum install -y lsof
lsof -i:123
kill -9 pid
ntpdate x.x.x.x
清除 (Kill) 该进程,然后尝试再次与 ntp 服务器进行同步。此时您不应该收到此错误消息。
请注意,如果您尝试与之同步的服务器没有运行 xntpd,则会收到下列错误消息:
ntpdate[12573]: no server suitable for synchronization found
出现这种情况的原因是,如果您想使用另一个服务器的时间,该服务器必须已经进行了自身同步。
Linux修改系统时间
修改日期:
时间设定成2023年5月10日的命令如下:
#date -s
05/10/2023
修改时间:
将系统时间设定成上午10点18分0秒的命令如下。
#date -s 10:18:00
修改时区:
找到相应的时区文件
/usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。
修改/etc/sysconfig/clock文件的内容为:
ZONE=”Asia/Shanghai”
UTC=false
ARC=false