Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
Karen Lilly Creations

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Glossary
MoreInfo
Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
FAQ
Copyright Info
Terms of Use
Privacy Info
Disclaimer
WorkBoard
Thanks
Donations
Advertising
Masthead / Impressum
Your Account

Communication
Feedback
Forums
Private Messages
Surveys

Features
HOWTOs
News Archive
Submit News
Topics
User Articles
Web Links

Google
Google


The Web
linux-tutorial.info

Who's Online
There are currently, 65 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here

  

hwclock



SYNOPSIS

       hwclock -r or hwclock --show
       hwclock -w or hwclock --systohc
       hwclock -s or hwclock --hctosys
       hwclock -a or hwclock --adjust
       hwclock -v or hwclock --version
       hwclock --set --date=newdate
       hwclock --getepoch
       hwclock --setepoch --epoch=year

       other options:

       [-u|--utc]   --localtime   --noadjfile  --directisa --test
       [-D|--debug]

       and arcane options for DEC Alpha:

       [-A|--arc] [-J|--jensen] [-S|--srm] [-F|--funky-toy]

       Minimum unique abbreviations of all  options  are  accept­
       able.

       Also, -h asks for a help message.


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.   The  time  shown is always in local
              time, even if you keep your Hardware Clock in Coor­
              dinated Universal Time.  See the --utc option.

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

       --hctosys
              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.

       --getepoch
              Print  out  standard  output  the kernel's Hardware
              Clock epoch value.  This is  the  number  of  years
              into  AD to which a zero year value in the Hardware
              Clock refers.  For example, if you  are  using  the
              convention  that  the year counter in your Hardware
              Clock contains the number of full years since 1952,
              then the kernel's Hardware Counter epoch value must
              be 1952.

              This epoch value is used whenever hwclock reads  or
              sets the Hardware Clock.

       --setepoch
              Set  the kernel's Hardware Clock epoch value to the
              value specified by the  --epoch  option.   See  the
              --getepoch option for details.

       --version
              Print the version of hwclock on Standard Output.

       --date=date_string
              You  need  this  option  if  you  specify the --set
              option.  Otherwise, it is ignored.  This  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  argument  is  in  local time, even if you keep
              your Hardware Clock in Coordinated Universal  time.
              See the --utc option.

       --epoch=year
              Specifies  the  year  which is the beginning of the
              Hardware Clock's epoch.  I.e. the number  of  years
              into  AD  to  which  a  zero  value in the Hardware
              Clock's year counter refers. It  is  used  together
              with the --setepoch option to set the kernel's idea
              of the epoch of the Hardware Clock, or otherwise to
              specify the epoch for use with direct ISA access.

              you've chosen.  So this option is how you give that
              information to hwclock.

              If you specify the wrong one of these  options  (or
              specify  neither  and  take  a wrong default), both
              setting and querying of the Hardware Clock will  be
              messed up.

              If  you specify neither --utc nor --localtime , the
              default is whichever was specified  the  last  time
              hwclock was used to set the clock (i.e. hwclock was
              successfully run with the --set ,  --systohc  ,  or
              --adjust options), as recorded in the adjtime file.
              If the adjtime file doesn't exist, the  default  is
              local time.

       --noadjfile
              disables  the  facilities provided by /etc/adjtime.
              hwclock will not read nor write to that  file  with
              this  option.  Either  --utc or --localtime must be
              specified when using this option.

       --directisa
              is meaningful only on an ISA machine  or  an  Alpha
              (which  implements  enough  of  ISA  to be, roughly
              speaking, an ISA machine for  hwclock's  purposes).
              For  other machines, it has no effect.  This option
              tells hwclock to use explicit I/O  instructions  to
              access  the  Hardware  Clock.  Without this option,
              hwclock will try to use the /dev/rtc device  (which
              it  assumes to be driven by the rtc device driver).
              If it is unable to open the device (for  read),  it
              will use the explicit I/O instructions anyway.

              The rtc device driver was new in Linux Release 2.

       --badyear
              Indicates  that  the Hardware Clock is incapable of
              storing years outside the range  1994-1999.   There
              is  a  problem  in  some  BIOSes  (almost all Award
              BIOSes made between 4/26/94  and  5/31/95)  wherein
              they  are unable to deal with years after 1999.  If
              one attempts to set the  year-of-century  value  to
              something  less  than 94 (or 95 in some cases), the
              value that actually gets set is 94 (or 95).   Thus,
              if  you  have one of these machines, hwclock cannot
              set the year after 1999 and cannot use the value of
              the clock as the true time in the normal way.

              To compensate for this (without your getting a BIOS
              1998, whichever one has the same  position  in  the
              leap  year  cycle  as the true year.  That way, the
              Hardware Clock inserts leap days where they belong.
              Again,  if  you let the Hardware Clock run for more
              than a year without setting it, this  scheme  could
              be defeated and you could end up losing a day.

              hwclock  warns you that you probably need --badyear
              whenever it finds your Hardware Clock set  to  1994
              or 1995.

       --srm  This  option  is  equivalent to --epoch=1900 and is
              used to specify the most  common  epoch  on  Alphas
              with SRM console.

       --arc  This  option  is  equivalent to --epoch=1980 and is
              used to specify the most  common  epoch  on  Alphas
              with ARC console (but Ruffians have epoch 1900).

       --jensen

       --funky-toy
              These  two  options  specify  what  kind  of  Alpha
              machine you have.  They are invalid  if  you  don't
              have  an  Alpha  and are usually unnecessary if you
              do, because hwclock should be able to determine  by
              itself what it's running on, at least when /proc is
              mounted.  (If  you  find  you  need  one  of  these
              options  to  make  hwclock  work, contact the main­
              tainer to see if the program  can  be  improved  to
              detect   your   system   automatically.  Output  of
              `hwclock --debug' and `cat /proc/cpuinfo' may be of
              interest.)

              --jensen means you are running on a Jensen model.

              --funky-toy  means that on your machine, one has to
              use the UF bit instead of the UIP bit in the  Hard­
              ware  Clock  to detect a time transition.  "Toy" in
              the option name refers to the Time Of Year facility
              of the machine.

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

       --debug
              Display a lot of information about what hwclock  is

       On  an  ISA system, this clock 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 a timer interrupt.  (On  an
       ISA  machine, the timer interrupt is part of the ISA stan­
       dard).  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 num­
       ber  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.

       A Linux kernel maintains a concept of a local timezone for
       the system.  But don't be misled --  almost  nobody  cares
       what  timezone  the kernel thinks it is in.  Instead, pro­
       grams that care about the timezone (perhaps  because  they
       want  to display a local time for you) almost always use a
       more traditional method of determining the timezone:  They
       use    the    TZ    environment    variable   and/or   the
       /usr/local/timezone directory, as  explained  in  the  man
       page  for  tzset(3).   However,  some  programs and fringe
       parts of the Linux kernel such as filesystems use the ker­
       nel  timezone  value.   An example is the vfat filesystem.
       If the kernel timezone value is wrong, the vfat filesystem
       will report and set the wrong timestamps on files.

       hwclock  Uses  many different ways to get and set Hardware
       Clock values.  The most normal way is to  do  I/O  to  the
       device  special  file  /dev/rtc,  which  is presumed to be
       driven by the rtc device driver.  However, this method  is
       not  always available.  For one thing, the rtc driver is a
       relatively recent addition to Linux.  Older systems  don't
       have  it.   Also,  though  there  are  versions of the rtc
       driver that work on DEC Alphas, there appear to be  plenty
       of  Alphas on which the rtc driver does not work (a common
       symptom is hwclock hanging).

       On older systems, the method  of  accessing  the  Hardware
       Clock depends on the system hardware.

       On  an  ISA  system, hwclock can directly access the "CMOS
       memory" registers that constitute the clock, by doing  I/O
       to  Ports  0x70  and  0x71.   It does this with actual I/O
       instructions and consequently can only do  it  if  running
       with superuser effective userid.  (In the case of a Jensen
       Alpha, there is no way for hwclock to  execute  those  I/O
       instructions,  and so it uses instead the /dev/port device
       special file, which provides almost as low-level an inter­
       face to the I/O subsystem).

       This  is  a really poor method of accessing the clock, for
       all the reasons that user space programs are generally not
       supposed to do direct I/O and disable interrupts.  Hwclock
       provides it because it is the only method available on ISA
       and  Alpha  systems  which  don't  have working rtc device
       drivers available.

       On an m68k system, hwclock can access the  clock  via  the
       console driver, via the device special file /dev/tty1.

       hwclock  tries  to  use /dev/rtc.  If it is compiled for a
       kernel that doesn't have that function or it is unable  to
       open  /dev/rtc,  hwclock will fall back to another method,
       if available.  On an ISA or Alpha machine, you  can  force
       hwclock  to use the direct manipulation of the CMOS regis­
       ters  without  even  trying  /dev/rtc  by  specifying  the
       --directisa option.


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.
       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 (using  --set  or
       --systohc  ),  hwclock  recalculates  the systematic drift
       rate based on how long it has been since the last calibra­
       tion, 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 --hctosys at system startup time, and maybe  peri­
       odically while the system is running via cron.

       The  adjtime  file, while named for its historical purpose
       of controlling adjustments only, actually  contains  other
       information  for use by hwclock in remembering information
       from one invocation to the next.

       The format of the adjtime file is, in ASCII:

       Line 1: 3 numbers,  separated  by  blanks:  1)  systematic
       drift  rate in seconds per day, floating point decimal; 2)
       Resulting number of seconds since 1969 UTC of most  recent
       adjustment  or  calibration, decimal integer; 3) zero (for
       compatibility with clock(8)) as a decimal integer.

       Line 2: 1 number: Resulting number of seconds  since  1969
       UTC of most recent calibration.  Zero if there has been no
       calibration yet or it is known that any previous  calibra­
       tion  is moot (for example, because the Hardware Clock has
       been found, since that calibration, not to contain a valid
       time).  This is a decimal integer.

       Line  3:  "UTC"  or  "LOCAL".   Tells whether the Hardware
       Clock is set to Coordinated Universal Time or local  time.
       You  can  always  override  this value with options on the
       hwclock command line.
       somewhere on the network or to a radio clock hooked up  to
       your system.  See RFC 1305).

       This  mode  (we'll  call it "11 minute mode") is off until
       something turns it on.  The ntp daemon xntpd is one  thing
       that  turns  it  on.   You can turn it off by running any­
       thing, including hwclock --hctosys, that sets  the  System
       Time the old fashioned way.

       To  see  if  it  is  on  or  off, use the command adjtimex
       --print and look at the value of "status".   If  the  "64"
       bit  of  this  number (expressed in binary) equal to 0, 11
       minute mode is on.  Otherwise, it is off.

       If your system runs with 11  minute  mode  on,  don't  use
       hwclock --adjust or hwclock --hctosys.  You'll just make a
       mess.  It is acceptable to  use  a  hwclock  --hctosys  at
       startup  time  to  get a reasonable System Time until your
       system is able to set the System Time  from  the  external
       source and start 11 minute mode.


ISA Hardware Clock Century value

       There  is  some  sort of standard that defines CMOS memory
       Byte 50 on an ISA machine as an indicator of what  century
       it  is.   hwclock  does  not  use or set that byte because
       there are some machines that don't define  the  byte  that
       way, and it really isn't necessary anyway, since the year-
       of-century does a good job of implying  which  century  it
       is.

       If  you have a bona fide use for a CMOS century byte, con­
       tact the hwclock maintainer; an option may be appropriate.

       Note that this section is only relevant when you are using
       the "direct ISA" method of accessing the Hardware Clock.


ENVIRONMENT VARIABLES

       TZ


FILES

       /etc/adjtime  /usr/share/zoneinfo/  (/usr/lib/zoneinfo  on
       old systems) /dev/rtc /dev/port /dev/tty1 /proc/cpuinfo


SEE ALSO

       adjtimex(8),  date(1),  gettimeofday(2),  settimeofday(2),
  




Login
Nickname

Password

Security Code
Security Code
Type Security Code


Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!


Amazon Wish List

Did You Know?
You can choose larger fonts by selecting a different themes.


Friends



Tell a Friend About Us

Bookmark and Share



Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.11 Seconds