1 timesyncd时间同步

Ubuntu 内置了时间同步,默认情况下使用systemd的timesyncd服务激活。

查找服务器上date最基本命令是date 。 任何用户都可以输入此命令来打印日期和时间:

date

Sun Oct  4 19:30:04 CST 2020

1.1 查看时区命令

timedatectl

root@ubuntu:/etc# timedatectl
                      Local time: Sun 2021-10-24 18:05:45 PDT
                  Universal time: Mon 2021-10-25 01:05:45 UTC
                        RTC time: Mon 2021-10-25 01:05:47
                       Time zone: America/Los_Angeles (PDT, -0700)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

 查看时区列表

timedatectl list-timezones

时区列表将打印到您的屏幕。 您可以按SPACE向下翻页,然后按b向上翻页。 找到正确的时区后,记下它,然后键入q退出列表。

1.2 修改时区

sudo timedatectl set-timezone Asia/Shanghai

您可以再次运行date来验证更改,时区缩写应反映新选择的值。

Ubuntu的默认安装现在使用timesyncd而不是ntpd。 timesyncd连接到相同的时间服务器,并以大致相同的方式工作,但更轻量级,更集成systemd和Ubuntu的低级别工作。

我们可以通过运行没有参数的timedatectl来查询timesyncd的状态。
       Ubuntu 设置timesyncd时间同步、时区、 NTP同步对时-小白实操记录-编程知识网

这将打印出本地时间,通用时间(如果您没有从UTC时区切换,可能与本地时间相同),以及一些网络时间状态信息。 System clock synchronized: yes表示时间已成功同步, systemd-timesyncd.service active: yes表示timesyncd已启用并正在运行。

如果timesyncd未激活,请使用timedatectl将其打开:

sudo timedatectl set-ntp on

再次运行timedatectl以确认网络时间状态。 实际同步可能需要一分钟,但最终Network time on:和NTP synchronized:应该读取yes 。

2 ntp对时

2.1 准备

在使用ntp之前,我们应该关闭timesyncd:

sudo timedatectl set-ntp no

2.1 安装ntp

 apt-get install ntp

ntpd将在安装后自动启动。 您可以在ntpd中查询状态信息,以验证一切正常:

ntpq -p

    Ubuntu 设置timesyncd时间同步、时区、 NTP同步对时-小白实操记录-编程知识网

ntpq是ntpd的查询工具。 -p标志要求提供有关ntpd连接到的NTP服务器(或页面)的信息。 您的输出会略有不同,但应列出默认的Ubuntu池服务器以及其他一些服务器。 请记住,ntpd建立连接可能需要几分钟时间。
结论

2.3 安装ntpdate(可选)

sudo apt-get install ntpdate

本步骤可选的原因在于,ntpdate一般在装系统时就已经装好,但有些系统版本会例外。当系统不存在该安装包时,要手动安装。

2.4 手动对时

sudo /etc/init.d/ntp stop 

先关闭 ntp 服务,然后手动对时:

ntpdate 192.169.……(ntp 服务器地址)

手动对时命令应当重复几次,直到命令行窗口中显示的差值几乎为0(若能对时成功,屏幕上应当会显示当前时间,在当前时间后有当前时间与服务器时间的差,初次对时时,这个差应该会比较大,一直输入对时命令直到这个差接近于0即算完成对时)

使用该方法时一定要切记一定要关闭ntp服务,即输入第一条命令,对时一次要停止一次。ntp服务一般会随机自动启动。

2.5 自动对时

方法一:查找etc目录下有无ntp.conf文件,当该文件存在时,在文件中添加以下语句:

   server 192.168.……(ntp服务器地址)

保存退出即可。

电脑中会有一个进程自动去读取该配置文件,并跟随服务器间隔一定时间进行一次对时。具体间隔时间不可查,正常情况下服务器是一台工控机,属性由机器本身决定。

方法二:当不存在ntp.conf文件时,在 /etc/crontab 文件中,输入以下命令(注意:命令中的user和command为指代,根据实际情况而定):

***** user command

第1个 * 表示分钟:取值范围为1~59,当需要一分钟执行一次时,可表示为 * /1,以下均同;
第2个 * 表示小时:取值范围0~23
第3个 * 表示日期:取值范围1~31
第4个 * 表示月份:取值范围1~12
第5个 * 表示星期:取值范围:0~6(0表示星期天)
user为需要执行该命令的用户
command表示要运行的命令

如上所说,假如需要使用root用户一分钟自动对时一次,则命令为:

*/1 * * * * root ntpdate 192.168.……(ntp服务器地址)

保存退出即可。