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-wait
。 ntp-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.
我有 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-wait
。 ntp-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.