Provided by: manpages-es-extra_0.8a-16_all bug

NOMBRE

       hwclock - interroga y pone en hora el Reloj del Hardware (RTC)

SINOPSIS

       hwclock --show
       hwclock --set --date=nuevafecha
       hwclock --systohc
       hwclock --hctosys
       hwclock --getepoch
       hwclock --setepoch --epoch=año
       hwclock --adjust
       hwclock --version

       otras opciones:

       --utc  --directisa --test --debug

       Las  abreviaciones  mínimas de todas las opciones son aceptables, si no
       hay ambigüedad.

       También se aceptan las opciones equivalentes -r, -w, -s, -a, -v,  -u  y
       -D, por compatibilidad con el programa "clock".

DESCRIPCIÓN

       hwclock  es  una  herramienta  para  acceder al Reloj del Hardware. Ud.
       puede mostrar la hora actual, poner el Reloj del Hardware  a  una  hora
       especificada,  poner  el  Reloj  del  Hardware a la Hora del Sistema, y
       poner el Tiempo del Sistema desde el Reloj del Hardware.

       Ud. también puede  ejecutar  hwclock  periódicamente  para  insertar  o
       quitar  tiempo  del  Reloj  del  Hardware  para  compensar desviaciones
       sistemáticas (en las que el reloj gana o pierde tiempo consistentemente
       a una cierta velocidad si se deja solo).

OPCIONES

       Ud.  necesita exactamente una de las siguientes opciones para decirle a
       hwclock qué función realizar:

       --show Lee el Reloj del  Hardware  y  muestra  la  hora  en  la  salida
              estándar.

       --set  Pone  el Reloj del Hardware a la hora dada por la opción --date.

       --hctosys
              Pone el Tiempo del Sistema a partir del Reloj del Hardware. Ésta
              es una buena opción para poner en uno de los guiones de arranque
              del sistema.

       --systohc
              Pone el Reloj del Hardware a la hora del sistema actual.

       --adjust
              Añade o sustrae tiempo del Reloj  del  Hardware  para  tener  en
              cuenta el desvío sistemático desde la última vez que el reloj se
              puso o se ajustó. Vea la discusión al respecto más adelante.

       --getepoch
              Muestra en la salida estándar el valor de la época del Reloj del
              Hardware  del núcleo. Esto es el número de años en la Era al que
              se refiere el año cero del Reloj del Hardware. Por  ejemplo,  si
              Ud.  emplea  el  convenio de que el contador de años en su Reloj
              del Hardware contiene el número de años  completos  desde  1952,
              entonces el valor de la época del contador de años del Reloj del
              Hardware debe ser 1952.

              Este valor de la época se emplea cada vez que hwclock lee o pone
              el Reloj del Hardware.

       --setepoch
              Pone  el  valor de la época del Reloj del Hardware del núcleo al
              valor  especificado  por  la  opción  --epoch.   Vea  la  opción
              --getepoch para más detalles.

       --version
              Muestra la versión de hwclock en la salida estándar.

              Si Ud. especifica la opción --set, necesita la opción siguiente.
              Si no, no es tenida en consideración.

       --date=nuevafecha
              Especifica la hora a la cual poner el  Reloj  del  Hardware.  El
              valor  de  esta  opción  es un argumento válido para el programa
              date(1).  Por ejemplo,

              hwclock --set --date="9/22/96 16:45:05"

       --epoch=año
              Especifica el año que es el principio de la época del Reloj  del
              Hardware.  Esto  es  el  número  de  años en la Era a la cual se
              refiere un valor cero en el  contador  de  años  del  Reloj  del
              Hardware.

              Por ejemplo,

              hwclock --setepoch --epoch=1952

       Las opciones siguientes se aplican a la mayoría de las funciones.

       --utc  Indica  que  el  Reloj  del  Hardware  se  mantiene en el Tiempo
              Universal Coordinado (UTC). Es cosa suya si mantiene su reloj en
              hora local o UTC, pero nada en el reloj le dice qué es lo que ha
              escogido. Así que con esta opción es como le da esa  información
              a hwclock.

       Si  no  especifica  --utc  cuando  debiera,  o  viceversa,  el  poner y
       preguntar la hora del reloj del hardware acabarán funcionando mal.

       --directisa
              tiene sentido solamente en una máquina ISA. Para todas las otras
              máquinas  no tiene efecto. Esta opción le dice a hwclock que use
              instrucciones de  E/S  explícitas  para  acceder  al  reloj  del
              hardware.   Sin   esta  opción,  hwclock  intentará  emplear  el
              dispositivo /dev/rtc (que supone  que  está  controlado  por  el
              controlador  del  dispositivo  rtc).  Si  es incapaz de abrir el
              dispositivo   (para   lectura),   empleará   las   instrucciones
              explícitas de E/S, de todas formas.

       El controlador de dispositivo rtc fue introducido en Linux versión 2.

       --test Hace  todo  excepto actualizar realmente el Reloj del Hardware o
              cualquier otra cosa. Esto es útil, especialmente  en  conjunción
              con --debug, para aprender sobre cómo funciona hwclock.

       --debug
              Muestra  un  montón  de  información  sobre  lo que hwclock está
              haciendo internamente. Algo de su función  es  compleja  y  esta
              salida puede ayudarle a comprender cómo funciona el programa.

NOTAS

Relojes en un sistema Linux

       Hay dos relojes principales en un sistema Linux:

       El Reloj del Hardware: Esto es un reloj que corre independientemente de
       cualquier programa de control ejecutándose en la CPU e  incluso  cuando
       la máquina está apagada.

       En un sistema ISA, este reloj está especificado como parte del estándar
       ISA. El programa de control puede leer o poner este reloj a un  segundo
       entero,  pero el programa de control también puede detectar los límites
       de los pulsos del reloj de 1 segundo, así que el reloj realmente  tiene
       una precisión virtualmente infinita.

       Este  reloj  se  llama  comúnmente  el  Reloj del Hardware, el reloj de
       tiempo real, el RTC, el reloj de la BIOS, y el reloj CMOS. El Reloj del
       Hardware,  en esta forma con las iniciales en mayúsculas, se acuñó para
       el uso en hwclock porque todos los otros nombres son inapropiados hasta
       el punto de llevar a confusión.

       El  Tiempo  del  Sistema:  Esto  es el tiempo mantenido por un reloj de
       dentro  del  núcleo  Linux  y  controlado   por   un   interruptor   de
       temporización.  (En una máquina ISA, el interruptor de temporización es
       parte del  estándar  ISA.)  Sólo  tiene  sentido  mientras  Linux  está
       ejecutándose  en  la  máquina.  El  Tiempo  del Sistema es el número de
       segundos desde las 00:00:00 horas del 1 de Enero de 1970,  UTC  (o  más
       sucintamente,  el número de segundos desde 1969). El Tiempo del Sistema
       no es un entero, sin embargo. Tiene precisión virtualmente infinita.

       El Tiempo del Sistema es el que tiene importancia. El propósito  básico
       del Reloj del Hardware en un sistema Linux es mantener la hora mientras
       que Linux no está ejecutándose. Ud. inicia el  Tiempo  del  Sistema  al
       tiempo  del  Reloj  del  Hardware cuando Linux arranca, y ya no utiliza
       nunca más el Reloj del Hardware. Observe que  en  DOS,  para  quien  se
       diseñó ISA, el Reloj del Hardware es el único reloj de tiempo real.

       Es  importante que el Tiempo del Sistema no tenga discontinuidades como
       las que podrían ocurrir  si  Ud.  empleara  el  programa  date(1)  para
       ponerlo en hora mientras el sistema esté en ejecución. Sin embargo, Ud.
       puede hacer lo que quiera con el Reloj del Hardware mientras el sistema
       esté ejecutándose, y la siguiente vez que Linux arrancara, lo haría con
       la nueva hora ajustada del Reloj del Hardware.  También  puede  emplear
       el  programa  adjtimex(8) para ajustar suavemente el Tiempo del Sistema
       mientras que el sistema está ejecutándose.

Cómo hwclock accede al Reloj del Hardware

       hwclock utiliza muchas formas diferentes de obtener y poner valores  en
       el  Reloj del Hardware.  La forma más normal es hacer E/S en el fichero
       especial de dispositivo /dev/rtc,  que  se  supone  controlado  por  el
       controlador  del  dispositivo  rtc.  Sin  embargo,  este método no está
       siempre disponible. Por una cosa: el controlador  rtc  es  una  adición
       relativamente reciente a Linux. Sistemas más antiguos no lo tienen.

       En  sistemas  más  viejos,  el  método de acceder al Reloj del Hardware
       depende del hardware del sistema.

       En un sistema ISA, hwclock puede acceder directamente a  los  registros
       de  la  "memoria  CMOS"  que  constituye  el  reloj, haciendo E/S a los
       puertos 0x70 y 0x71. Esto sólo lo puede hacer si se ejecuta con el  UID
       efectivo 0 (esto es, con privilegios de súper-usuario).

       Esto  es realmente un pobre método de acceder al reloj, por la razón de
       que los programas en el espacio de usuario se supone  generalmente  que
       no  deben  hacer  E/S directa y deshabilitar interrupciones. Hwclock lo
       proporciona porque es el único método disponible con núcleos Linux  más
       antiguos para máquinas ISA.

       En  un sistema m68k (68000 de Motorola), hwclock puede acceder al reloj
       a través del controlador de consola, mediante el  fichero  especial  de
       dispositivo /dev/tty1.

       En un Alpha, de DEC, /dev/rtc es la única posibilidad.

       Hay  o  había  algunos sistemas Linux en Alpha que no tienen /dev/rtc y
       hay o había programas que accedían  al  reloj  a  través  de  E/S  casi
       directa  usando  /dev/port. Sin embargo, esto no es un método tan bueno
       como el de  /dev/rtc  y  tales  programas  no  fueron  tan  ampliamente
       empleados  como  para  que  hwclock  tuviera  ninguna  necesidad de ser
       compatible hacia atrás con ellos. Así que  hwclock  no  proporciona  el
       método de /dev/port y consecuentemente no funcionará en un Alpha que no
       tenga /dev/rtc.

       hwclock intenta emplear /dev/rtc. Si se ha compilado para un núcleo que
       no  tiene esa función o es incapaz de abrir /dev/rtc, hwclock intentará
       otro método, si hay alguno disponible. En una máquina  ISA,  Ud.  puede
       forzar  a hwclock a usar la manipulación directa de los registros de la
       CMOS  sin  ni  siquiera  intentar  /dev/rtc  especificando  la   opción
       --directisa.

La Función de Ajuste

       El  Reloj del Hardware no es usualmente muy preciso. Sin embargo, mucha
       de su imprecisión es completamente predecible; gana o pierde  la  misma
       cantidad  de tiempo cada día. Esto se llama desviación sistemática.  La
       función  de  "ajuste"  de  hwclock  le   permite   hacer   correcciones
       sistemáticas para corregir la desviación sistemática.

       Funciona  así:  Hwclock mantiene un fichero, /etc/adjtime, que mantiene
       alguna información histórica. Este fichero se llama el fichero adjtime.

       Suponga  que  Ud. empieza sin fichero adjtime. Ud. da una orden hwclock
       --set para poner el Reloj del Hardware  a  la  hora  verdadera  actual.
       Hwclock  crea  el  fichero adjtime y graba en él la hora actual como la
       última vez que el reloj se calibró.  5 días  más  tarde,  el  reloj  ha
       ganado  10  segundos,  así  que  Ud.  da  otra orden hwclock --set para
       ponerlo con 10 segundos menos.  Hwclock ajusta el fichero adjtime  para
       mostrar  la  hora  actual como la última vez que el reloj se calibró, y
       graba dos segundos por día como la velocidad de desviación sistemática.
       Pasan  24 horas, y entonces Ud. da una orden hwclock --adjust.  Hwclock
       consulta el fichero adjtime y ve que el reloj gana 2 segundos  por  día
       cuando  se le deja solo, y que se le ha dejado solo exactamente un día.
       Así que sustrae 2 segundos del Reloj del Hardware.  Entonces  graba  la
       hora  actual  como la última vez que se ajustó el reloj. Otras 24 horas
       pasan y Ud. da otra orden hwclock --adjust.   Hwclock  hace  lo  mismo:
       sustrae  2  segundos  y actualiza el fichero adjtime con la hora actual
       como la última vez que el reloj se ajustó.

       Cada vez que Ud. calibra (pone en hora) el reloj, hwclock recalcula  la
       velocidad  de  desviación sistemática basado en cuánto tiempo ha pasado
       desde la última calibración, cuánto tiempo ha pasado  desde  el  último
       ajuste,  qué velocidad de desviación se suponía en cualesquiera ajustes
       intervinientes, y la cantidad que el reloj está desviado actualmente de
       la hora verdadera.

       Se  arrastra  una pequeña cantidad de error en cualquier momento en que
       hwclock pone el reloj en hora, de forma que rehúsa hacer un ajuste  que
       vaya  a ser de menos de 1 segundo. Más tarde, cuando Ud. pida un ajuste
       de nuevo, la desviación acumulada será de más de un segundo  y  hwclock
       hará el ajuste entonces.

       Es bueno hacer un hwclock --adjust justo antes del hwclock --hctosys en
       la hora del arranque del sistema, y quizás periódicamente mientras  que
       el sistema está ejecutándose, mediante cron.

       El formato del fichero adjtime es:

       Línea  1: 3 números: 1) velocidad de desviación sistemática en segundos
       por día, número en base diez en coma flotante; 2) número resultante  de
       segundos  desde  1969 UTC del más reciente ajuste o calibración, entero
       en base diez; 3) cero (por compatibilidad con clock ).

       Línea 2: 1 número: El número resultante de segundos desde 1969  UTC  de
       la calibración más reciente.

       Ud.  puede  emplear  con  hwclock  un  fichero  adjtime que fuera usado
       previamente con el programa clock.

FICHEROS

       /etc/adjtime

VÉASE TAMBIÉN

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

AUTORES

       Escrito por Bryan Henderson, en  Septiembre  de  1996  (bryanh@giraffe-
       data.com),  basándose  en  el  trabajo  hecho  en  el programa clock de
       Charles Hedrick, Rob Hooft y Harald König.  Mire el código fuente  para
       la historia completa y los créditos.

                                 2 Marzo 1998                       HWCLOCK(8)