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