ntpdate 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ntpdate 命令安装:


-bash: ntpdate: command not found

#Debian
apt-get install ntpdate

#Ubuntu
apt-get install ntpdate
service --status-all #安装完成后可以通过如下命令查看NTP服务是否启动

#Alpine
apk add ntpdate

#Arch Linux
pacman -S ntpdate

#Kali Linux
apt-get install ntpdate

#CentOS
yum install  ntpdate

#Fedora
dnf install ntpdate

#OS X
brew install ntpdate

#Raspbian
apt-get install ntpdate

ntpdate 命令补充说明:


ntpdate 命令是用来设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NTP 时钟过滤器和选择算法来选择最好的样本。

此 ntpdate 命令使用以下方法进行时间调整:

  • 如果它确定时钟偏差超过 0.5 秒,它通过调用 settimeofday 子例程设置时钟时间。在引导时间,这是一个首选的方法。
  • 如果它确定时钟偏差小于 0.5 秒,它通过调用 adjtime 子例程和偏移量来调整时钟时间。此方法倾向于用牺牲一些稳定性来保持漂移时钟更加准确。 当不是通过运行一个守护程序而是从 cron 命令有规则的运行 ntpdate 命令时,每一小时或两小时执行一次可以保证足够的走时精度,从而避免调整时钟。
  • 使用很多服务器可以大幅度改善 ntpdate 命令的可靠性与精度。尽管能使用单一服务器,但您能通过提供至少 3 个或 4 个服务器以获得更好的性能。

    如果一个类似 xntpd 守护程序的 NTP 服务器守护程序正在同一主机上运行,命令将拒绝 ntpdate 设置日期。

    你必须有 root 权限才能在主机上运行这个命令

    ntpdate 命令语法:


    ntpdate [ -b] [ -d] [ -s] [ -u] [ -aKeyid] [ -eAuthenticationDelay] [ -kKeyFile] [ -oVersion] [ -pSamples] [ -tTimeOut] Server...
    

    ntpdate 命令选项:


    -aKeyid 使用 Keyid 来认证全部数据包。
    -b  通过调用 settimeofday 子例程来增加时钟的时间。
    -d  指定调试方式。判断 ntpdate 命令会产生什么结果(不产生实际的结果)。结果再现在屏幕上。这个标志使用无特权的端口。
    -eAuthenticationDelay 指定延迟认证处理的时间秒数。
    -kKeyFile 当不使用缺省值 /etc/ntp.keys 文件时,为包含密钥的文件指定一个不同的名称。 请参阅文件KeyFile的描述。
    -oVersion 当轮询它的发出数据包时,指定使用的 NTP 版本实现。 Version 的值可以是 1,2,3。缺省值是 3。
    -pSamples 指定从每个服务器获取的样本的数目。 Samples 的值在 1 和 8 之间,并包括 1 和 8。它的缺省值是 4。
    -s  指定日志操作 syslog 设施的使用,而不是使用标准输出。 当运行 ntpdate 命令和 cron命令时,它是很有用的。
    -tTimeOut 指定等待响应的时间。给定 TimeOut 的值四舍五入为 0.2 秒的倍数。缺省值是 1 秒。
    -u  指定使用无特权的端口发送数据包。 当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。防火墙是一个系统或者计算机,它控制从外网对专用网的访问。
    

    ntpdate 命令实例


    #同步时间服务器,也可以选择其他时间同步服务器
    /usr/sbin/ntpdate 0.centos.pool.ntp.org
    

    注意参数:hwclock -w

    [root@TestMaster ~]
    $ /usr/sbin/ntpdate 0.centos.pool.ntp.org
    
    #观察下面的与上面有什么不同?
    [root@TestMaster ~]
    $ ntpdate asia.pool.ntp.org;hwclock -w
    14 Jan 10:35:57 ntpdate[20984]: step time server 133.243.238.163 offset -571.972423 sec
    

    ntpdate 命令遇到的坑


    在对服务器做 ntpdate 在线时间更新发现提示 the NTP socket is in use, exiting 报错,发现是 ntpd 这个进程导致的,于是先停用 ntpd..

    系统时间同步到硬件,防止系统重启后时间被还原

    $ /usr/sbin/ntpdate 0.centos.pool.ntp.org
    14 Jan 10:44:24 ntpdate[20841]: the NTP socket is in use, exiting
    
    $ service ntpd stop
    Redirecting to /bin/systemctl stop  ntpd.service
    

    或者直接执行下面 hwclock 命令:

    hwclock --systohc
    

    PS:用阿里云,服务器藏在内网,如果想时间同步,可以使用下面 crontab 来同步阿里云的内网时间

    ntpdate 命令扩展阅读:




    ntpdate 命令评论