Provided by: manpages-es-extra_0.8a-17_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)