公司新闻

Linux ntpdate命令介绍(校时客户端)(ntp客户端)ubuntu离线安装ntpdate(未封装、高端口号)(知名端口、注册端口、动态端口/私有端口)

文章目录

NTPdate命令

NTPdate简介

NTPdate是一种在Linux和类Unix系统中同步网络时间协议(NTP)服务器时间的命令行程序。它可以让你的系统时钟与互联网上的标准时间服务器保持一致,从而确保系统时间的准确性。

查询ntp服务器时间:

ntpdate -q pool.ntp.org

安装NTPdate

在开始使用NTPdate之前,我们需要先在系统中安装它。以下是在不同系统中安装NTPdate的命令:

  • 在Ubuntu和Debian上:
    sudo apt-get install ntpdate
    
  • 在CentOS和RHEL上:
    sudo yum install ntpdate
    

基本使用

要使用ntpdate同步ntp服务器时间,我们只需要运行ntpdate命令,后跟NTP服务器的地址。例如:

ntpdate time.windows.com

此命令将把你的系统时间设置为与time.windows.com服务器相同的时间。

参数详解

以下是NTPdate命令中一些重要参数的详细说明:

- -u: 使用未封装的NTP请求和响应包,而不是使用UDP端口123。

这个参数让ntpdate使用一个未封装的、高端口号的源来发送NTP请求。这通常用于防火墙或者路由器阻止了向公网的NTP服务器的123端口的访问。

"未封装"和"高端口号"是网络通信术语。

  • “未封装”:在计算机网络中,数据从发送端到接收端需要经过多层协议的处理。每一层都会对数据进行一定的包装或封装,以添加该层协议所需要的控制信息。如果一个请求被称为"未封装",那么意味着它没有添加额外的控制信息或者头部信息,只是简单地将应用程序生成的原始数据发送出去。

  • “高端口号”:在网络通信中,端口号是用来区分同一台计算机上不同应用或进程的一种方式。根据惯例,0到1023号端口被定义为“知名端口”(Well-Known Ports),这些端口主要与一些被广泛使用的协议关联(如HTTP的80端口,HTTPS的443端口)。1024到49151号端口被定义为“注册端口”(Registered Ports),这些端口主要被公司或组织使用。剩下的端口,即49152到65535号,被定义为“动态”或“私有”端口。当我们说"高端口号"时,通常指的是这个范围内的端口。

在ntpdate中,-u参数的作用就是让其使用高端口号发送NTP请求,而不是默认的123端口。这主要是因为某些环境中,网络防火墙可能会阻止对低端口号的访问,通过使用高端口号可以避免这种情况。

- -b: 当本地系统时间和网络时间有较大差距时,强制进行一次时间调整。

当本地系统时间与网络时间有很大的差距时,可以使用此选项强制进行一次时间调整,而不是逐步将时间改过来。这个参数使得ntpdate在第一次同步时无视偏移量,直接将时间设置为从NTP服务器获取的正确时间。

- -s: 日志输出到syslog。

该选项将日志信息输出到syslog中,而不是直接在终端中显示。syslog是Linux/Unix系统中的系统日志服务,负责接收和处理来自系统内核、系统服务和应用程序的日志信息。

- -d: 输出调试信息。

这个选项将会打开调试模式,它会输出详细的调试信息,以便于解决可能存在的问题。这些信息包括ntpdate发送和接收的每一个数据包的详细内容,以及其他一些关于同步过程的详细信息。

- -q: 查询ntp服务器时间。

这个参数让ntpdate只查询指定的NTP服务器,但并不设置本机时间。这对于仅想查看时间偏移量,但又不想立即调整系统时间的情况很有用。

常见错误与解决方法

有时,当我们试图同步时间时,可能会遇到一些问题。以下是一些常见的错误以及如何解决它们的方法:

  • Error: “ntpdate[12345]: no servers can be used, exiting”

    这个错误通常意味着我们无法连接到指定的NTP服务器。检查服务器地址是否正确,或者尝试更换其他NTP服务器。

  • Error: “ntpdate[12345]: the NTP socket is in use, exiting”

    这个错误表明已经有其他程序正在使用NTP服务。这种情况下,我们可以使用-u选项来解决该问题。

实战应用

NTPdate的一个实际应用场景是定期通过cron job进行时间同步。以下是一个例子:

0 * * * * /usr/sbin/ntpdate pool.ntp.org >> /var/log/ntpdate.log 2>&1

以上命令将每小时同步一次时间,并将日志记录到/var/log/ntpdate.log文件。

参考资源

  1. NTPdate官方文档
  2. Ubuntu NTPdate使用手册

如何离线安装ntpdate(apt-get download ntpdate)

在 Ubuntu 20.04 中离线安装 ntpdate 的步骤如下:

  1. 下载 ntpdate:首先,你需要从另一台可以访问互联网的机器上下载 ntpdate 安装包。你可以去 Ubuntu 的官方软件包库下载,地址为:https://packages.ubuntu.com/。在搜索框中输入 ntpdate,选择适合你的 Ubuntu 版本(在这种情况下是 20.04,也就是 Focal),然后点击 amd64i386 (取决于你的系统架构)来下载 .deb 文件。



我们盒子是arm64架构的,就下载这个:

我勒个去,怎么没有链接啊,amd64版本的都有链接的:


解释:

从你提供的 URL 来看,你正在尝试在一个基于 ARM64 架构的 Ubuntu 20.04 系统上安装 ntpdate
然而,Ubuntu 的软件包页面可能没有显示下载链接,这是因为一些软件包只能从特定的软件源获取。在这种情况下,你需要找到能够提供 ARM64 架构版本的 ntpdate 的合适源。
以下是一个可行的解决方案:
1.在另一台可以联网的 Ubuntu 机器上,打开终端。
2.添加 Universe 软件源(如果尚未添加的话)。大部分 Ubuntu 安装默认都会包含 Universe 源,但以防万一,你可以运行下面的命令来添加:
sudo add-apt-repository universe
sudo apt-get update
3.下载 ntpdate 包及其依赖。你可以使用 apt-get download 命令来下载软件包和依赖,如下所示:
apt-get download ntpdate

请注意,这种方法需要你有另一台可以访问互联网并且运行着相同架构(ARM64)和操作系统版本的 Ubuntu 的机器。

  1. 将文件复制到目标机器:然后,你需要将下载的 .deb 文件复制到你想要安装 ntpdate 的机器上。你可以使用 USB 设备或者其他方式进行传输。

  1. 在目标机器上安装 ntpdate:最后,在你的 Ubuntu 20.04 机器上,打开终端并导航到包含 .deb 文件的目录。然后使用以下命令来安装 ntpdate

    sudo dpkg -i <file-name.deb>
    

    在这里, 是你下载的 ntpdate 安装包的文件名。

如果在安装过程中遇到任何依赖问题,你可能还需要下载和安装那些依赖包。你可以在相同的 Ubuntu 软件包页面找到这些依赖包,并重复上述步骤进行安装。

完成上述步骤后,你应该就能在 Ubuntu 20.04 机器上离线安装 ntpdate 了。

20231018 注意:在ubuntu20.04上,我只是用这个命令来临时查看ntp服务器用,具体同步我用的systemd-timesyncd服务