¿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 (referencia en el man en línea):

# 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.

Entradas relacionadas:

  1. Convirtiendo texto en diferentes juegos de caracteres desde la línea de consola
  2. ¿Cómo cambiar la clave de un usuario en WordPress desde MySQL?
  3. 10 buenos hábitos para manejar la consola (1/2)
  4. 10 buenos hábitos para manejar la consola (2/2)
  5. Lanzar un Script en Linux de cuatro maneras diferentes

Acerca de F. Javier Carazo Gil

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, co-fundador de Red de Autores y Geometrio, puedes saber más sobre mí, mi vida laboral, mis libros, mis artículos y mi día a día en @fjcarazo y en mi perfil público de LinkedIn.
  • Pingback: Bitacoras.com

  • http://www.muspells.net nordri

    Qué opinas del comando ntpdate?

    Lo tengo como tarea de cron con la sintaxis
    ntpdate 0.pool.ntp.org >>/dev/null

    para que ejecute cada hora, no hay que enredar con configuraciones. Empecé a usarlo porque nunca recordaba la sintaxis de date :S

    Saludos.

  • http://ahornero.com ahornero

    Y si no quieres depender de un servicio de hora desde la red, puedes usar tú GPS a través del demonio gpsd.

    Por cierto, gracias por la aportación @nordri, un saludo.

  • http://www.jcarazo.com carazo

    @nordri: Curiosamente, justo antes de leer tu comentario, ya había terminado y programado una entrada que saldrá esta noche a portada explicando el uso de NTP, me alegra saber que te interesará :)

    Qué razón llevas con la sintaxis de date, aparte de poco intuitiva… es como todo en este mundo, demasiado sajón en las formas de presentación.

  • Pingback: Tweets that mention ¿Cómo cambiar la fecha y la hora desde la consola? | Linux Hispano -- Topsy.com