ntpd sync 后执行脚本

Execute script after ntpd sync

我有 raspberry pi 和 raspbian。我想在时间与 ntpd 同步后立即执行脚本,我的脚本需要正确的日期时间。我该怎么做?

假设你有一个有权调用ntpdate的用户(换句话说,谁可以调整系统的时间),你可以使用下面的脚本,我在下面的例子中使用了ntp服务器“0.ca.pool.ntp.org"

#!/bin/bash

NEEDS_SYNC=1
while [ "$NEEDS_SYNC" -ne "0" ]; do
    ntpdate -t 4     0.ca.pool.ntp.org
    NEEDS_SYNC=$?    # If this variable is set ot 0, time sync worked
    sleep 2
done

# RUN THE SCRIPT THT NEEDS ntp SYNC'D TIME HERE

请注意,您可能需要安装软件包 'ntpdate' 才能正常工作。

正确的方法是使用ntp-waitntp-wait 就是为这种情况量身定做的。这是手册页:

ntp-wait(1)                     User Commands                    ntp-wait(1)

NAME
       ntp-wait - Wait for ntpd to stabilize the system clock

SYNOPSIS
       ntp-wait [-flag [value]]... [--opt-name [[=| ]value]]...

       All arguments must be options.

DESCRIPTION
       will  send  at  most  num-tries queries to sleeping for secs-between-
       tries after each status return that says has not yet produced a  syn‐
       chronized and stable system clock.

       will do this quietly, unless the v flag is provided.

OPTIONS
       -n num-tries, --=num-tries
              Number  of  times to check ntpd.  This option takes an integer
              number as its argument.  The default num-tries for this option
              is:
                   100

              The  maximum  number  of times we will check ntpd to see if it
              has been able to synchronize and stabilize the system clock.

       -s secs-between-tries, --=secs-between-tries
              How long to sleep between tries.  This option takes an integer
              number  as  its  argument.  The default secs-between-tries for
              this option is:
                   6

              We will sleep for @file{secs-between-tries} after  each  query
              of ntpd that returns "the time is not yet stable".

       -v, -- Be verbose.

              By  default,  ntp-wait  is silent.  With this option, ntp-wait
              will provide status information.

       -?, --help
              Display usage information and exit.

       -!, --more-help
              Pass the extended usage information through a pager.

       - [{v|c|n}], --version[={v|c|n}]
              Output version of program and exit.  The default mode is  `v',
              a  simple version.  The `c' mode will print copyright informa‐
              tion and `n' will print the full copyright notice.


EXIT STATUS
       One of the following exit values will be returned:

       0      Successful program execution.

       1      The operation failed or the command syntax was not valid.