TIP 1:

     Is NTP Working?

     STEP 1 (Test the current server):

          Try issuing the following command:

          $ ntpq -pn

           remote refid st t when poll reach delay offset jitter
           ===================================================
           tock.usno.navy 0.0.0.0 16 u - 64 0 0.000 0.000 4000.00

          The above is an example of a problem.
          Compare it to a working configuration.

          $ ntpq -pn

           remote refid st t when poll reach delay offset jitter
           ========================================================
           +128.4.40.12 128.4.40.10 2 u 107 128 377 25.642 3.350 1.012
           127.127.1.0 127.127.1.0 10 l 40 64 377 0.000 0.000 0.008
           +128.91.2.13 128.4.40.12 3 u 34 128 377 21.138 6.118 0.398
           *192.5.41.41 .USNO. 1 u 110 128 377 33.69 9.533 3.534

     STEP 2 (Configure the /etc/ntp.conf):

          $ cat /etc/ntp.conf

            # My simple client-only ntp configuration.
            server timeserver1.upenn.edu
            # ping -a timeserver1.upenn.edu shows the IP address
128.91.2.13
            # which is used in the restrict below
            restrict 128.91.2.13
            server tock.usno.navy.mil
            restrict 192.5.41.41
            server 128.4.40.12
            restrict 128.4.40.12
            server 127.127.1.0 # local clock
            fudge 127.127.1.0 stratum 10
            driftfile /etc/ntp/drift
            restrict default ignore
            restrict 127.0.0.0 mask 255.0.0.0
            authenticate no

     STEP 3 (Configure /etc/ntp/step-tickers):

          The values for server above are placed in the
"/etc/ntp/step-tickers" file

          $ cat /etc/ntp/step-tickers

              timeserver1.upenn.edu
              tock.usno.navy.mil
              128.4.40.12

          The startup script /etc/rc.d/init.d/ntpd will grab the
servers in this
          file and execute the ntpdate command as follows:

             /usr/sbin/ntpdate -s -b -p 8 timeserver1.upenn.edu

          Why? Because if the time is off ntpd will not start. The
command above set the
          clock. If System Time deviates from true time by more than
1000 seconds, then,
          the ntpd daemon  will enter panic mode and exit.

     STEP 4 (Restart the service and check):

          Issue the restart command

            /etc/init.d/ntpd restart

          check the values for "ntpq -pn",
          which should match step 1.

             ntpq -pn

     SPECIAL NOTE:

          Time is always stored in the kernel as the number of seconds
since
          midnight of the 1st of January 1970 UTC, regardless of
whether the
          hardware clock is stored as UTC or not.  Conversions to
local time
          are done at run-time. So, it's easy to get the time in different
          timezones for only the current session as follows:


              $ export TZ=EST
              $ date
              Mon Aug  2 10:34:04 EST 2004

              $ export TZ=NET
              $ date
              Mon Aug  2 15:34:18 NET 2004

          The following are possible values for TZ:

              Hours From Greenwich Mean Time (GMT) Value Description
              0 GMT Greenwich Mean Time
              +1 ECT European Central Time
              +2 EET European Eastern Time
              +2 ART
              +3 EAT Saudi Arabia
              +3.5 MET Iran
              +4 NET
              +5 PLT West Asia
              +5.5 IST India
              +6 BST Central Asia
              +7 VST Bangkok
              +8 CTT China
              +9 JST Japan
              +9.5 ACT Central Australia
              +10 AET Eastern Australia
              +11 SST Central Pacific
              +12 NST New Zealand
              -11 MIT Samoa
              -10 HST Hawaii
              -9 AST Alaska
              -8 PST Pacific Standard Time
              -7 PNT Arizona
              -7 MST Mountain Standard Time
              -6 CST Central Standard Time
              -5 EST Eastern Standard Time
              -5 IET Indiana East
              -4 PRT Atlantic Standard Time
              -3.5 CNT Newfoundland
              -3 AGT Eastern South America
              -3 BET Eastern South America
              -1 CAT Azores

              DST timezone


              0      BST for British Summer.
              +400   ADT for Atlantic Daylight.
              +500   EDT for Eastern Daylight.
              +600   CDT for Central Daylight.
              +700   MDT for Mountain Daylight.
              +800   PDT for Pacific Daylight.
              +900   YDT for Yukon Daylight.
              +1000  HDT for Hawaii Daylight.
              -100   MEST for Middle European Summer,
                         MESZ for Middle European Summer,
                         SST for Swedish Summer and FST for French Summer.
              -700   WADT for West Australian Daylight.
              -1000  EADT for Eastern Australian Daylight.
              -1200  NZDT for New Zealand Daylight.

     The following is an example of setting the TZ environment variable
     for the timezone, only when timezone changes go into effect.

               $ export TZ=EST+5EDT,M4.1.0/2,M10.5.0/2

     Take a look at the last line "M10.5.0/2". What does it mean? Here
is the
     documentation


        Mm.w.d This  specifies  day  d (0 <= d <= 6) of week w (1 <= w
<= 5) of
              month m (1 <= m <= 12).  Week 1 is the first week in
which day d
              occurs and week 5 is the last week in which day d
occurs.  Day 0
              is a Sunday.

              The time fields specify when, in the local time 
currently  in
              effect, the  change  to  the  other  time  occurs.   If
omitted,
              the default is  02:00:00.

      So this is what it means. M10 stands for October, the 5 is the
fifth week
      that includes a Sunday (note 0 in M10.5.0/2 is Sunday). To see
that it is
      the fifth week see the calendar below. The time change occurs a
2am in
      the morning. (Special Note: In 2007, DST was extended. See TIP 230).

                                October
                         Su Mo Tu We Th Fr Sa
                                         1  2
                          3  4  5  6  7  8  9
                         10 11 12 13 14 15 16
                         17 18 19 20 21 22 23
                         24 25 26 27 28 29 30
                         31

       Prove it. Take the following program sunrise, which can
calcuates sunrise
       and sunset for an latitude and longitude. This program can be
downloaded
       from the following location:
          
http://sourceforge.net/direct-dl/mchirico/souptonuts/working_with_time.tar.gz

       Below is a bash script that will run the program for the next
100 days.

          #!/bin/bash
          #  program: next100days  Mike Chirico
          #  download:
          # 
http://sourceforge.net/direct-dl/mchirico/souptonuts/working_with_time.tar.gz
          #
          #  This will calculate the sunrise and sunset for
          #  latitude     39.95  Note must convert to degrees
          #  longitude  75.15  Note must convert to degrees
          lat=39.95
          long=75.15
          for (( i=0; i <= 100; i++))
          do
            sunrise    `date -d "+$i day" "+%Y %m %d"` $lat $long
          done

       Take a look at the following sample output.

           $ export TZ=EST+5EDT,M4.1.0/2,M10.5.0/2
           $ ./next100days

          Sunrise  08-24-2004  06:21:12   Sunset 08-24-2004  19:43:42
          Sunrise  08-25-2004  06:22:09   Sunset 08-25-2004  19:42:12
          Sunrise  08-26-2004  06:23:06   Sunset 08-26-2004  19:40:41
          Sunrise  08-27-2004  06:24:03   Sunset 08-27-2004  19:39:09
          Sunrise  08-28-2004  06:25:00   Sunset 08-28-2004  19:37:37
          Sunrise  08-29-2004  06:25:56   Sunset 08-29-2004  19:36:04
          Sunrise  08-30-2004  06:26:53   Sunset 08-30-2004  19:34:31
          Sunrise  08-31-2004  06:27:50   Sunset 08-31-2004  19:32:57
          Sunrise  09-01-2004  06:28:46   Sunset 09-01-2004  19:31:22
          Sunrise  09-02-2004  06:29:43   Sunset 09-02-2004  19:29:47
          ..[values omitted ]
          Sunrise  10-28-2004  07:25:31   Sunset 10-28-2004  18:02:34
          Sunrise  10-29-2004  07:26:38   Sunset 10-29-2004  18:01:19
          Sunrise  10-30-2004  07:27:46   Sunset 10-30-2004  18:00:06
          Sunrise  10-31-2004  06:28:53   Sunset 10-31-2004  16:58:54
          Sunrise  11-01-2004  06:30:01   Sunset 11-01-2004  16:57:44
          Sunrise  11-02-2004  06:31:10   Sunset 11-02-2004  16:56:35

       Compare 10-30-2004 with 10-31-2004. Sunrise is an hour earlier
because
       daylight saving time has ended, just as predicted.

       There is an easier way to switch between timezones. Take a look
at the
       directory zoneinfo as follows:

            $ ls /usr/share/zoneinfo

            Africa      Chile    Factory    Iceland      Mexico   
posix       UCT
            America     CST6CDT  GB         Indian       Mideast  
posixrules  Universal
            Antarctica  Cuba     GB-Eire    Iran         MST       PRC
        US
            Arctic      EET      GMT        iso3166.tab  MST7MDT  
PST8PDT     UTC
            Asia        Egypt    GMT0       Israel       Navajo   
right       WET
            Atlantic    Eire     GMT-0      Jamaica      NZ        ROC
        W-SU
            Australia   EST      GMT+0      Japan        NZ-CHAT   ROK
        zone.tab
            Brazil      EST5EDT  Greenwich  Kwajalein    Pacific  
Singapore   Zulu
            Canada      Etc      Hongkong   Libya        Poland    SystemV
            CET         Europe   HST        MET          Portugal  Turkey

       TZ can be set to any one of these files. Some of these are
directories and contain
       subdirectories, such as ./posix/America. This way you don not
have to enter the
       timezone, offset, and range for dst, since it has already been
calculated.

           $ export TZ=:/usr/share/zoneinfo/posix/America/Aruba
           $ export TZ=:/usr/share/zoneinfo/Egypt



Reply via email to