CLOCK(8)

CLOCK(8)

httpd Home Page System Administration Index identd


NAME
       clock - query and set the ISA hardware clock (RTC)

SYNOPSIS
       hwclock --show [ --utc ] [ --test ] [ --debug ]
       hwclock  --set  --date=newdate  [  --utc  ]  [  --test ] [
       --debug ]
       hwclock --systohc [ --utc ] [ --test ] [ --debug ]
       hwclock --hctosys [ --utc ] [ --test ] [ --debug ]
       hwclock --adjust [ --utc ] [ --test ] [ --debug ]
       hwclock --version [ --debug ]

       Minimum unique abbreviations of all  options  are  accept-
       able.

       Also,  equivalent  options  -r, -w, -s, -a, -v, -u, and -D
       are accepted for compatibility with the program "clock".

DESCRIPTION
       hwclock is a tool for accessing the Hardware  Clock.   You
       can  display the current time, set the Hardware Clock to a
       specified time, set the Hardware Clock to the System Time,
       and set the System Time from the Hardware Clock.

       You  can also run hwclock periodically to insert or remove
       time from the Hardware Clock to compensate for  systematic
       drift (where the clock consistently gains or loses time at
       a certain rate if left to run).

OPTIONS
       You need exactly one of  the  following  options  to  tell
       hwclock what function to perform:

       --show Read the Hardware Clock and print the time on Stan-
              dard Output.

       --set  Set the Hardware Clock to the  time  given  by  the
              --date option.

       --hctosys
              Set  the System Time from the Hardware Clock.  This
              is a good option  to  use  in  one  of  the  system
              startup scripts.

       --systohc
              Set  the Hardware Clock to the current System Time.

       --adjust
              Add or subtract time from  the  Hardware  Clock  to
              account  for  systematic  drift since the last time
              the clock was  set  or  adjusted.   See  discussion
              below.

       --version
              Print the version of hwclock on Standard Output.
              You  need the following option if you specify --set
              option.  Otherwise, it is ignored.

       --date=date_string
              Specifies the time to which  to  set  the  Hardware
              Clock.   The value of this option is an argument to
              the date(1) program.  For example,
              hwclock --set --date="9/22/96 16:45:05"

       The following options apply to most functions.

       --utc  Indicates that the Hardware Clock is kept  in  Uni-
              versal Coordinated Time.  It is your choice whether
              to keep your clock in UTC or local time, but  noth-
              ing  in  the  clock  tells which you've chosen.  So
              this option is how you  give  that  information  to
              hwclock.

       If you don't specify --utc when you should, or vice versa,
       both setting and querying of the Hardware  Clock  will  be
       messed up.

       --test Do everything except actually updating the Hardware
              Clock.  This is useful, especially  in  conjunction
              with --debug, in learning about hwclock.

       --debug
              Display  a lot of information about what hwclock is
              doing internally.  Some of its function is  complex
              and  this  output  can  help you understand how the
              program works.

NOTES
Clocks in a Linux System
       There are two main clocks in a Linux system:

       The Hardware Clock: This is a  clock  that  runs  indepen-
       dently  of any control program running in the CPU and even
       when the machine is powered off.  It is specified as  part
       of  the ISA standard.  The control program can read or set
       this clock to a whole second, but the control program  can
       also  detect the edges of the 1 second clock ticks, so the
       clock actually has virtually infinite precision.

       This clock is commonly called the hardware clock, the real
       time  clock,  the RTC, the BIOS clock, and the CMOS clock.
       Hardware Clock, in its capitalized form,  was  coined  for

       use by hwclock because all of the other names are inappro-
       priate to the point of being misleading.

       The System Time: This is the time kept by a  clock  inside
       the  Linux  kernel  and driven by the ISA timer interrupt.
       It has meaning only while Linux is running on the machine.
       The  System  Time  is the number of seconds since 00:00:00
       January 1, 1970 UTC (or more  succinctly,  the  number  of
       seconds  since  1969).  The System Time is not an integer,
       though.  It has virtually infinite precision.

       The System Time is the time that  matters.   The  Hardware
       Clock's  basic  purpose  in a Linux system is to keep time
       when Linux is not running.  You initialize the System Time
       to  the time from the Hardware Clock when Linux starts up,
       and then never use the Hardware Clock again.  Note that in
       DOS, for which ISA was designed, the Hardware Clock is the
       only real time clock.

       It is important that the System Time not have any  discon-
       tinuities  such  as  would happen if you used the date(1L)
       program to set it while the system is running.   You  can,
       however,  do whatever you want to the Hardware Clock while
       the system is running, and the next time Linux starts  up,
       it  will  do  so  with the adjusted time from the Hardware
       Clock.  You  can  also  use  the  program  adjtimex(8)  to
       smoothly adjust the System Time while the system runs.

The Adjust Function
       The Hardware Clock is usually not very accurate.  However,
       much of its inaccuracy is  completely  predictable  --  it
       gains or loses the same amount of time every day.  This is
       called systematic drift.  Hwclock's "adjust" function lets
       you  make systematic corrections to correct the systematic
       drift.

       It works like this: Hwclock keeps  a  file,  /etc/adjtime,
       that  keeps  some  historical information.  This is called
       the adjtime file.

       Suppose you start with  no  adjtime  file.   You  issue  a
       hwclock  --set  command  to  set the Hardware Clock to the
       true current time.  Hwclock creates the adjtime  file  and
       records  in it the current time as the last time the clock
       was calibrated.  5 days later, the  clock  has  gained  10
       seconds, so you issue another hwclock --set command to set
       it back 10 seconds.  Hwclock updates the adjtime  file  to
       show the current time as the last time the clock was cali-
       brated, and records 2 seconds per day  as  the  systematic
       drift  rate.  24 hours go by, and then you issue a hwclock
       --adjust command.  Hwclock consults the adjtime  file  and
       sees  that  the  clock  gains  2 seconds per day when left

       alone and that it has been left alone for exactly one day.
       So  it  subtracts  2  seconds from the Hardware Clock.  It
       then records the current time as the last time  the  clock
       was  adjusted.   Another  24  hours  goes by and you issue
       another hwclock --adjust.  Hwclock does  the  same  thing:
       subtracts  2 seconds and updates the adjtime file with the
       current time as the last time the clock was adjusted.

       Every time you calibrate (set) the clock, hwclock recalcu-
       lates  the  systematic drift rate based on how long it has
       been since the last calibration,  how  long  it  has  been
       since  the last adjustment, what drift rate was assumed in
       any intervening adjustments, and the amount by  which  the
       clock is presently off.

       A  small  amount  of error creeps in any time hwclock sets
       the clock, so it refrains from making an  adjustment  that
       would  be  less than 1 second.  Later on, when you request
       an adjustment again, the accumulated drift  will  be  more
       than a second and hwclock will do the adjustment then.

       It  is  good  to  do  a  hwclock  --adjust just before the
       hwclock --set at system startup time, and  maybe  periodi-
       cally while the system is running via cron.

       The format of the adjtime file is:

       Line 1: 3 numbers: 1) systematic drift rate in seconds per
       day, floating point decimal; 2) Resulting number  of  sec-
       onds  since 1969 UTC of most recent adjustment or calibra-
       tion, decimal integer; 3)  zero  (for  compatibility  with
       clock ).

       Line  2:  1 number: Resulting number of seconds since 1969
       UTC of most recent calibration.

       You can use an adjtime file that was previously used  with
       the clock program with hwclock.

FILES
       /etc/adjtime

SEE ALSO
       adjtimex(8) date(1) gettimeofday(2) settimeofday(2) 
       crontab(1) 

AUTHORS
       Written By Bryan Henderson, September 1996, based on  work
       done  on  the clock program by Charles Hedrick, Rob Hooft,
       and Harald Koenig.  See the source code for complete  his-
       tory and credits.


httpd Home Page System Administration Index identd