Configurar y visualizar la hora

En Linux, la zona horaria del sistema es determinada por /etc/localtime (algunas veces es un enlace simbólico). Si es un enlace, entonces apunta a un archivo de datos de zona horaria que describe la zona horaria local. Los archivos de datos de zonas horarias están ubicados en /usr/lib/zoneinfo o /usr/share/zoneinfo. (Otras distribuciones de Linux pueden llegar a determinar la zona horaria del sistema de manera diferente.)

Por ejemplo, en un sistema SuSE ubicado en New Jersey, /etc/localtime apuntaría a /usr/share/zoneinfo/US/Eastern.

Si no encuentra el directorio zoneinfo en /usr/lib o en /usr/share, intente encontrarlo ejecutando find /usr -type d -name zoneinfo, o consulte la documentación de su distribución Linux.

¿Qué sucede cuando existen usuarios utilizando el mismo sistema pero se encuentran ubicados en zonas horarias diferentes? Un usuario puede cambiar su zona horaria privada definiendo la variable del ambiente TZ. Si TZ no se encuentra definida, entonces la zona horaria del sistema es la utilizada. La sintaxis de la variable TZ se encuentra descripta en la página de manual de tzset.

El comando date muestra la hora y fecha actuales. Por ejemplo: [54] For example:

$ date
Sun Jul 14 21:53:41 EET DST 1996
$

Domingo, 14 de julio de 1996, alrededor de las 10 menos 10 de la noche, en la zona horaria llamada “"EET DST"” (la cual puede ser el "horario de verano" del Día del Este de Europa). date puede también mostrar la hora en forma universal:

$ date -u
Sun Jul 14 18:53:42 UTC 1996
$

date también se utiliza para establecer la hora del reloj del kernel:

# date 07142157
Sun Jul 14 21:57:00 EET DST 1996
# date
Sun Jul 14 21:57:02 EET DST 1996
#

Lea la página de manual de date si desea conocer mayores detalles; ya que la sintaxis es un poco complicada. Solo el usuario root puede modificar la fecha y/u hora. Aunque cada usuario puede definir su propia zona horaria, el reloj es el mismo para todos.

Date solo muestra o modifica el reloj de software. El comando clock sincroniza los relojes de hardware y software. Cuando el sistema inicia, el comando clock es utilizado para leer el reloj de hardware y actualizar el reloj de software. Si necesita modificar ambos relojes, primero debe modificar el reloj de software con date, y luego sincronizar la hora del reloj por hardware con el comando clock -w.

La opción -u en el comando lock le indica a clock que la fecha y hora (mostrada o definida) se encuentra en formato de hora universal. Debe utilizar la opción -u correctamente, en caso contrario, la computadora puede estar confundida sobre cual es la fecha y hora correcta.

Los relojes deben modificarse con cuidado y precisión. Muchas partes de un sistema UNIX requieren que los relojes trabajen correctamente. Por ejemplo, el demonio cron ejecuta comandos periódicamente. Si cambia el reloj, el sistema puede estar confundido en cuanto a la necesidad o no de ejecutar determinado comando. Hubo una vez, en un sistema UNIX antiguo, en donde alguien adelantó el reloj 20 años en el futuro, y entonces cron quiso ejecutar los comandos periódicos de veinte años, todos de una sola vez. Las versiones actuales de cron no tienen este problema, pero aún así debe ser cuidadoso con estos detalles (pueden existir otros programas actuales que trabajen similarmente mal como "ese" viejo cron). Grandes saltos en el tiempo (hacia el futuro o el pasado) son mas peligrosos que pequeñas diferencias.



[54] Tenga cuidado con el comando time, ya que no muestra la fecha y hora del sistema.