2011-06-26 13:23:39 +0000 2011-06-26 13:23:39 +0000
71
71

¿Cómo fijar la hora actual en Linux?

¿Por qué es diferente la salida de los siguientes comandos?

root@vmi2115:/var# hwclock
Sun 26 Jun 2011 01:21:38 PM CEST -0.273230 seconds
root@vmi2495:/var# date
Sun Jun 26 15:21:39 CEST 2011
root@vmi2115:/var#

¿Y puedo cambiar la hora actual en Linux?

Respuestas (10)

92
92
92
2011-06-26 15:28:54 +0000

Normalmente querrás tener la hora establecida automáticamente, y en ese caso, querrás configurar ntpd para que te establezca automáticamente la hora.

Los detalles difieren ligeramente de una distribución a otra, pero si estás ejecutando Ubuntu, por ejemplo, hay una guía sobre la configuración de NTP en Ubuntu. De lo contrario, sólo Google ntpd <distribution-name>, y probablemente lo encontrarás.

Sin embargo, si quieres configurarlo manualmente, puedes usar date --set="<date string>". Ejemplos de esto podrían ser:

date --set="23 June 1988 10:00:00"
date --set="10:00:00"
37
37
37
2011-06-26 14:13:09 +0000

Ajustar el reloj de hardware a la hora actual del sistema.

# hwclock --systohc

Ajustar la hora del sistema a partir del reloj de hardware.

# hwclock --hctosys
23
23
23
2013-04-01 13:13:25 +0000

sólo ntpdate ntp.ubuntu.com y todo estará bien.

Hay más información sobre esto en Documentación Oficial de Ubuntu

13
13
13
2013-08-23 16:51:36 +0000

Otro problema común y muy molesto es, cuando se selecciona la zona horaria equivocada…

Comprobar la zona horaria con la salida de la fecha:

$ fecha

Fre Aug 23 18:47:04 UTC 2013

Para corregir el tipo de zona horaria:

$ sudo tzselect

y seleccionar la Región correcta con los números correspondientes.

Una segunda tarea es establecer la hora correcta:

$ sudo date –set=“18:37:00”

O simplemente tomar la hora del HW-Clock:

$ sudo hwclock –hctosys

3
3
3
2015-04-03 10:00:44 +0000

En CentOS las zonas horarias se encuentran en /usr/share/zoneinfo/, para cambiar la fecha del sistema a una zona horaria específica puedes:

Primero, haz una copia de seguridad del archivo de hora local existente.

sudo mv /etc/localtime /etc/localtime.bak

Después, crea el enlace:

sudo ln -s /usr/share/zoneinfo/Europe/Lisbon /etc/localtime

Comprueba la nueva fecha del sistema tecleando date.

Para ajustar la fecha del sistema Linux manualmente puedes escribir:

date -s "11 MAR 2006 11:11:11"

O

date --set="11 MAR 2015 11:11:11"

O

date +%Y%m%d -s "20150311"

Para ajustar el reloj del hardware a la hora actual del sistema:

hwclock --systohc

O

hwclock -w
2
2
2
2015-06-17 09:24:07 +0000

Prueba esto:

date +%T -s "12:21:00"

o

date +%T%p -s "12:22:20AM"
date +%T%p -s "12:23:30PM"
1
1
1
2013-07-31 07:32:37 +0000

“hwclock” es la fecha del hardware (máquina), y “date” es la fecha del software (sistema operativo).

Para cambiar la fecha del hardware de la PC:

hwclock --set --date="2013-7-31 09:30"

Para cambiar la fecha del software:

date --set "2013-7-31 09:30"
0
0
0
2011-11-26 11:33:01 +0000

date devuelve el tiempo dado como el tiempo desde el momento en que la cpu se inició más el reloj interno del hardware dado el tiempo, hwclock da el tiempo que tiene el reloj interno.

El tiempo basado en la cpu tiende a desviarse mientras la máquina está arriba, esa es la razón de la existencia del comando hwclock --hctosys. También es una de las razones detrás del uso del Protocolo de Tiempo de la Red, que se utiliza para coordinar el tiempo internacionalmente en Internet.

0
0
0
2016-09-26 12:37:17 +0000

Usa esto si no tienes el cliente NTP

date -s $(wget -q -O - http://www.timeapi.org/eest/now | cut -d '+' -f 1 | tr -d : | tr -d - | tr -d T | cut -c 1-12)

eest en la URL es tu zona horaria local

Puedes usar utc… y etc.

0
0
0
2019-02-20 14:18:53 +0000

¿puedo cambiar la hora actual en Linux?

Para mí, necesitaba ejecutar primero este comando:

sudo systemctl stop systemd-timesyncd

De lo contrario, systemd reiniciaría la hora inmediatamente. Después de detener el servicio systemd, ejecutando date funciona como se esperaba:

$ sudo date -s 'january 1 1971'
Fri Jan 1 00:00:00 CET 1971
$ date
Fri Jan 1 00:00:00 CET 1971

Mientras el servicio se estaba ejecutando, el comando date -s parecía funcionar, pero ejecutando date un momento después me daría el tiempo systemd de nuevo.