home *** CD-ROM | disk | FTP | other *** search
- Setting up time and time zones
-
- There are several things involved in getting time right under Linux:
-
- - /usr/lib/zoneinfo contains files that define what time zone you
- are in. If they are missing, no time zone calculations
- are done, i.e. your internal clock is assumed to be on
- local time rather than the Unix standard of GMT. The only
- file that you absolutely need is /usr/lib/zoneinfo/localtime, but I
- recommend also having /usr/lib/zoneinfo/posixrules. Posixrules
- is typically a copy of or link to localtime. Localtime defines
- your default zone. Posixrules is needed to interpret the TZ
- variable, which is used if you want to specify a zone other than
- the default.
-
- - the "date" command can be used to set or display the date/time.
- Note however that it does not set the hardware clock, so
- next time you reboot, you'll be back to the old time.
- I recommend that after changing the time with "date", you
- use "clock -w" or "clock -u -w" to update the hardware clock
- as well. (See below.)
-
- - the "clock" command can be used to set or display the date/time
- in the hardware (CMOS) clock. Typically your /etc/rc script
- will contain
- clock -s
- which will cause the Unix date/time to be initialized from the
- CMOS clock when you boot. If your CMOS clock is set to GMT
- (which is what I recommend) the correct command is
- clock -u -s
-
- The binary time distribution should be untarred under /usr. It
- contains lib/zoneinfo, bin/date, bin/clock, and doc/time.doc (this
- file). Once you've installed these files, you'll want to do four
- things:
-
- 1) set /usr/lib/zoneinfo/localtime and /usr/lib/zoneinfo/posixrules.
- You should copy the file for your time zone. E.g. if you are in the
- U.S. Eastern time zone, do
-
- cd /usr/lib/zoneinfo
- cp US/Eastern localtime
- ln localtime posixrules
-
- Localtime defines the local time zone. Posixrules defines the zone to
- be used to interpret the TZ environment variable. Since it's far more
- convenient simply to use the right time zone file, nothing more will
- be said here about how the TZ variable is used. Unless you intend to
- use TZ, you can ignore the next paragraph.
-
- If you want exact POSIX behavior, posixrules should be a copy of or
- link to one of the U.S. time zone files. (For non-U.S. daylight
- rules, the TZ variable defines the daylight transition rules.)
- However it may make more sense practically for it to be the same as
- localtime, as shown in the instructions above.
-
- 2) Once you've set up localtime and posixrules, you can remove the
- rest of the files in /usr/lib/zoneinfo, if you're sure you'll never
- want to operate in any other time zone. Or you can keep just the few
- time zones that you might need.
-
- 3) Put the correct "clock" command into /etc/rc. Which command to use
- depends upon whether you want your hardware clock to keep local time
- or GMT. I recommend using GMT, since that will allow daylight savings
- transitions to be completely automatic. However the same clock is
- used by DOS, and some people don't like the time in DOS being GMT. I
- use Unix-compatible software under DOS. It uses the TZ environment
- variable to do time zone conversion. Thus I prefer the clock being
- GMT even under DOS. But some people may not like that. Anyway, if
- your hardware clock is set to the local time, put the line
-
- clock -s
-
- in /etc/rc. This will set the Unix time from your hardware clock,
- doing the necessary time conversion. If your hardware clock is set
- to GMT, then you'll need the -u option:
-
- clock -u -s
-
- 4) Now make sure that your hardware clock is set correctly. Try
- "clock" with no arguments. It will print the current setting of the
- hardware clock. Make sure it is right, and that it is either local or
- GMT, as you decided. (If the hardware clock is supposed to be GMT,
- you can use "clock -u". This will convert from GMT to local and
- display it.) To set the clock, first use the "date" command to get
- the date right in Unix. Then use "clock -w" to set the hardware
- clock. Note that "clock -w" will set the hardware clock to the local
- time, and "clock -u -w" will set it to GMT. Verify with "clock" that
- the hardware clock is as you want it.
-
- From now on, the time should be right. If your hardware clock loses
- or gains time, you can update it at a future date by the same
- procedure just described: first get the Unix time right using "date"
- and then use "clock -w" or "clock -u -w" to set the hardware clock.
-
- If your hardware clock is set using local time, make sure to reset it
- when daylight time changes. If you're running Unix when daylight time
- changes, the Unix time will adjust automatically. In that case, all
- you need is "clock -w" to update the hardware clock. If you aren't
- running Unix during the transition, then your time will be an hour off
- the next time you boot. In that case, set the correct Unix time using
- "date", and then use "clock -w" to update the hardware clock. If your
- hardware clock is set using GMT time, none of this is necessary --
- daylight time transitions will happen automatically.
-