>> adjtimex (8) ( Linux man: Команды системного администрирования )
NAME
adjtimex - display or set the kernel time variables
SYNOPSIS
adjtimex [option]...
DESCRIPTION
This program gives you raw access to the kernel time variables. For a
machine connected to the Internet, or equipped with a precision
oscillator or radio clock, the best way to regulate the system clock
is with ntpd(8). For a standalone or intermittently connected
machine, you may use adjtimex instead to at least correct for
systematic drift.
Anyone may print out the time variables, but only the superuser
may change them.
If your computer can be connected to the net, you might run
ntpd for at least several hours and use adjtimex --print
to learn what values of tick and freq it settled on. Alternately, you
could estimate values using the CMOS clock as a reference (see the
--compare and --adjust switches). You could then add a
line to rc.local invoking adjtimex to set those parameters
each time you reboot.
OPTIONS
Options may be introduced by either - or --, and unique
abbreviations may be used.
Here is a summary of the options, grouped by type. Explanations
follow.
Get/Set Kernel Time Parameters
-p
--print
-t
--tick val
-f newfreq
--frequency newfreq
-o val
--offset val
-s adjustment
--singleshot adjustment
-m val
--maxerr val
-e val
--esterror val
-T val
--timeconstant val
-a[count]
--adjust[=count]
Estimate Systematic Drifts
-c[count]
--compare[=count]
-i tim
--interval tim
-l file
--logfile file
-h timeserver
--host timeserver
-w
--watch
-r[file]
--review[=file]
-u
--utc
Informative Output
--help
-v
--version
-p, --print
Print the current values of the kernel time variables. NOTE: The time
is "raw", and may be off by up to one timer tick (10 msec). "status"
gives the value of the time_status variable in the kernel. For
Linux 1.0 and 1.2 kernels, the value is as follows:
0 clock is synchronized (so the kernel should
periodically set the CMOS clock to match the
system clock)
1 inserting a leap second at midnight
2 deleting a leap second at midnight
3 leap second in progress
4 leap second has occurred
5 clock not externally synchronized (so the
kernel should leave the CMOS clock alone)
For Linux 2.0 kernels, the value is a sum of these:
1 PLL updates enabled
2 PPS freq discipline enabled
4 PPS time discipline enabled
8 frequency-lock mode enabled
16 inserting leap second
32 deleting leap second
64 clock unsynchronized
128 holding frequency
256 PPS signal present
512 PPS signal jitter exceeded
1024 PPS signal wander exceeded
2048 PPS signal calibration error
4096 clock hardware fault
-tval, --tickval
Set the number of microseconds that should be added to the system time
for each kernel tick interrupt. There are supposed to be 100 ticks
per second, so val should be close to 10000. Increasing
val by 1 speeds up the system clock by about 100 ppm, or 8.64
sec/day. tick must be in the range 9000...11000 on Intel systems,
or 900...1100 on Alpha systems.
-fnewfreq, --frequencynewfreq
Set the system clock frequency offset to newfreq. newfreq
can be negative or positive, and gives a much finer adjustment than
the --tick switch. The value is scaled such that newfreq
= 1<<16 speeds up the system clock by about 1 ppm, or .0864 sec/day.
Thus, --tick 10000 --frequency 6553600 is about the same as
--tick 10001 --frequency 0. newfreq must be in the range
-6553600...6553600, allowing maximum adjustments of plus or minus 100
ppm.
-sadj, --singleshotadj
Slew the system clock by adj usec.
(Its rate is changed temporarily by about 1 part in 2000.)
-oadj, --offsetadj
Add a time offset of adj usec.
The kernel code adjusts the time gradually by adj,
notes how long it has been since the last time offset,
and then adjusts the frequency offset to correct for the apparent drift.
adj must be in the range -512000...512000.
-mval, --maxerrorval
Set maximum error (usec).
-eval, --esterrorval
Set estimated error (usec).
The maximum and estimated error are not used by the kernel.
They are merely made available to user processes via the
adjtimex(2) system call.
-tval, --timeconstantval
Set phase locked loop (PLL) time constant.
val determines the bandwidth or "stiffness"
of the PLL. The effective PLL time constant will be a multiple of (1
<< val). For room-temperature quartz
oscillators, David Mills recommends the value 2,
which corresponds
to a PLL time constant of about 900 sec and a maximum update interval
of about 64 sec. The maximum update interval scales directly with the
time constant, so that at the maximum time constant of 6, the
update interval can be as large as 1024 sec.
Values of val between zero and 2 give quick convergence; values
between 2 and 6 can be used to reduce network load, but at a modest cost
in accuracy.
-c[count], --compare[=count]
Periodically compare the system clock with the CMOS clock. After the
first two calls, print values for tick and frequency offset that would
bring the system clock into approximate agreement with the CMOS clock.
CMOS clock readings are adjusted for systematic drift using using the
correction in /etc/adjtime --- see hwclock(8). The
interval between comparisons is 10 seconds, unless changed by the
--interval switch. The optional argument is the number of
comparisons. (If the argument is supplied, the "=" is
required.)
-a[count], --adjust[=count]
By itself, same as --compare, except the recommended values are
actually installed after every other comparison. With --review,
the tick and frequency are set to the least-squares estimates. (In
the latter case, any count value is ignored.)
-itim, --intervaltim
Set the interval in seconds between clock comparisons for the
--compare and --adjust options.
-u, --utc
The CMOS clock is set to UTC (universal time) rather than local time.
-l[file], --log[=file]
Save the current values of the system and CMOS clocks, and optionally
a reference time, to file (default /var/log/clocks.log).
The reference time is taken from a network timeserver (see the
--host switch) or supplied by the user (see the --watch
switch).
-htimeserver, --hosttimeserver
Use ntpdate to query the given timeserver for the current time.
This will fail if timeserver is not running a Network Time
Protocol (NTP) server, or if that server is not synchronized. Implies
--log.
-w, --watch
Ask for a keypress when the user knows the time, then ask what that
time was, and its approximate accuracy. Implies --log.
-r[file], --review[=file]
Review the clock log file (default /var/log/clocks.log)
and estimate, if possible, the rates of the CMOS and system clocks.
Calculate least-squares rates using all suitable log entries. Suggest
corrections to adjust for systematic drift. With --adjust, the
frequency and tick are set to the suggested values. (The CMOS clock
correction is not changed.)
-h, --help
Print the program options.
-v, --version
Print the program version.
EXAMPLES
If your system clock gained 8 seconds in 24 hours, you
could set the tick to 9999, and then it would lose 0.64 seconds a day
(that is, 1 tick unit = 8.64 seconds per day).
To correct the rest of the error, you could set the frequency offset to
(1<<16)*0.64/.0864 = 485452. Thus, putting the following
in rc.local would approximately correct the system clock:
adjtimex --tick 9999 --freq 485452
NOTES
adjtimex adjusts only the system clock --- the one that runs
while the computer is powered up. To set or regulate the CMOS clock,
see hwclock(8).