¿Cómo cambiar la fecha y la hora desde la consola?

¿Cómo cambiar la fecha y la hora desde la consola?

Hoy mismo he tenido un problema que en absoluto es baladí. Me han avisado de que una aplicación de creación propia no funcionaba por un tema de fechas y horas, en concreto, no dejaba reservar un recurso común porque decía que la hora de reserva era anterior a la actual. El problema era que el servidor sobre el que ejecuta dicha aplicación, tenía mal la hora (está virtualizado con Xen y lleva sólo un par de días en marcha).

La solución es utilizar un servidor NTP pero mientras lo configuras y abres la conexión en el cortafuegos corporativo, lo más básico es poder modificar la fecha y hora a mano desde la terminal.

Primero, para ver la hora del sistema usamos la instrucción date:

-bash-3.2# date
Fri Nov 26 16:55:23 CET 2010

Para modificarlo tenemos, con el mismo comando le pasamos el parámetro -s seguido de una cadena que indique: “AAAA/MM/DD HH:MM:SS”. Un ejemplo es el siguiente:

-bash-3.2# date -s “2010/11/26 11:40:00”
Fri Nov 26 11:40:00 CET 2010

Más ejemplos de uso del comando date:

# Cambiar sólo la fecha:
date -d mm/dd/aa
# O lo que es lo mismo:
date –date=mm/dd/aa
# Cambiar sólo la hora:
date -s hh:mm:ss
# O su equivalente
date –set=hh:mm:ss

reloj retro geek

Sin embargo, todavía hay un detalle más que cuidar. En Linux tenemos dos relojes: el reloj hardware y el reloj del sistema. Con date modificamos el segundo, para modificar el reloj hardware deberemos usar: hwclock.

Lo ideal es que ambos estén sincronizados, por lo haremos lo siguiente (indicando además que se use UTC, tiempo universal coordinado):

hwclock –systohc –utc

Para terminar os comento, que si estáis usando un sistema virtualizado con Xen, no vais a disponer de reloj hardware (no sé si es posible virtualizarlo, pero por defecto, no se incluye), así que esta segunda parte os comentará amablemente un error:

-bash-3.2# hwclock –systohc –utc
Cannot access the Hardware Clock via any known method.
Use the –debug option to see the details of our search for an access method.
-bash-3.2# hwclock –debug –systohc –utc
hwclock from util-linux-2.13-pre7
hwclock: Open of /dev/rtc failed, errno=19: No such device.
No usable clock interface found.
Cannot access the Hardware Clock via any known method.