Puede que al acceder a tu Servidor Privado Virtual (VPS) te des cuenta que la fecha del sistema no es la correcta.
¿El motivo? Tal vez el servidor que has contratado se encuentre físicamente instalado en un país en una zona horaria diferente, y que utilice por tanto la fecha de ese área. En otras ocasiones, quizás tras un cambio de hora local (paso del horario de verano a inverno, o a la inversa) la hora de tu sistema no refleje esa variación.
Pero también puede ser que la hora esta perfectamente, pero resulte que quieras cambiar la fecha de tu sistema, por algún oscuro motivo…
El caso es que en determinadas ocasiones resultar interesante poder cambiar la hora de tu sistema Linux, en el Servidor Privado Virtual (VPS) que tienes contratado. Así que vamos a ver como realizarlo.
Para mantener y reflejar la hora adecuada, los sistemas utilizan dos relojes diferentes. El reloj de la BIOS (hardware), y el reloj del Sistema Operativo (software). Además, para componer la hora correcta, estos relojes utilizan dos variables o datos universales: El Tiempo Universal Coordinado (UTC), y la zona o Uso horario.
Una cosa a tener en cuenta que la hora que se refleja en todos los sistemas, consola, servidor web, aplicaciones en marcha,… es la del reloj del Sistema Operativo, ya que la hora de la BIOS solo se utiliza para mantener el registro del tiempo cuando el sistema operativo está apagado. Por tanto tu primera idea podría ser tratar de cambiar directamente la hora del reloj software. Piensa entonces que al reinicializar el ordenador este cogerá la hora de la BIOS para restaurar el reloj software, y por tanto en ese caso nos volvería a colocar la hora anterior.
De todas formas, afortunadamente en nuestros sistemas Linux resulta bastante sencillo cambiar la hora de cualquiera de estos dos relojes, ya que existen comandos independientes para cada uno de ellos.
Así, para cambiar la hora de la BIOS, tenemos el comando hwclock. Podríamos entonces ejecutar:
# hwclock --set --date="2013-01-23 13:20"
para actualizar la fecha y hora del reloj BIOS con la hora actual. O incluso:
# hwclock --systohc –utc
para actualizar la fecha BIOS con la que registe el reloj del Sistema Operativo (el reloj software).
Por su parte, para cambiar la hora del Sistema Operativo, tenemos el comando date.
# date --set "2013-01-23 13:20"
nos actualizaría el reloj del sistema operativo con la fecha actual.
Sin embargo, si ejecutas estos dos comandos en tu servidor VPS, te darás cuenta que no es tan fácil.
En un servidor VPS la hora de la BIOS no es posible cambiarla ni configurarla desde tu instancia de sistema, por lo que el comando hwclock te va a devolver siempre error. Algo del estilo de:
“No se puede acceder al reloj de hardware por ningún método conocido”.
Esto ocurre porque la hora BIOS del VPS viene siempre impuesta por la máquina donde se virtualiza el sistema (y donde seguramente resida no solo tu instancia de servidor VPS, sino la de muchos otros clientes). Máquina a la cual tú no tienes acceso. Por eso no funciona el comando hwclock.
En cuanto a la hora del Sistema Operativo, en principio si es posible modificarla a través del comando date, ya que en ese caso actúas sobre el sistema operativo de tu instancia de servidor VPS. Sin embargo aquí puedes encontrarte que te da igualmente un error:
”date: no se puede establecer la fecha: Operación no permitida”
O incluso que se actualiza aparentemente la hora, pero al momento vuelves a tener la que tenías anteriormente.
El motivo de este problema, que además como te digo no ocurre siempre, hay que buscarlo en los sistemas utilizados para virtualizar los servidores que has contratado. Así, por ejemplo, es conocido que los VPS generados con tecnología OpenVZ no permiten modificar la hora del Sistema Operativo en cada cuenta de cliente (el VPS que yo tengo contratado con 1&1, donde alojo este blog, utiliza esta tecnología). Esto se debe a que en este tipo de virtualización los VPS sincronizan o toman la hora directamente del nodo.
En estos casos la única manera de cambiar la hora sería accediendo al servidor donde esta instalado el nodo de virtualización OpenVZ. Esto no es posible para los clientes, así que la opción sería pedir a la propia empresa prestadora del servicio que cambiase ese parámetro. Pero esto cambiaría la hora para todas las VPS de todos los clientes que tuvieran instalado el servicio en ese nodo, con lo cual tu solicitud no será resuelta favorablemente.
Y en estos casos, ¿No hay nada que hacer? . Bueno, todavía no esta todo perdido. En estos casos no vas a poder poner en tu sistema una fecha cualquiera que por algún motivo te interese definir. Pero si que vas a poder configurar la fecha actual para que la hora del sistema se adapte a tu uso horario.
Como ya hemos comentado antes, una de las variables que utilizan los sistemas y sus relojes para establecer la hora adecuada es la configuración de uso horario. Y afortunadamente resulta que esta variable si que puede ser modificada dentro de tu sistema operativo, en tu instancia de VPS (entre otros motivos porque este parámetro admite ser configurado con distintos valores para diferentes usuarios).
Así, el archivo localtime, en ubicado en la carpeta /etc de tu sistema, es donde se guarda la configuración activa de zona horaria. Además, todas las posibles opciones de zonas o usos horarios están almacenados en la ruta:
# /usr/share/zoneinfo/
Por tanto, lo único que tienes que hacer es mover (crear enlace simbólico que se llame localtime) a esta carpeta el fichero que refleje la zona horaria que te interese. El único detalle es que, antes de crear este enlace nuevo, como el fichero localtime ya existe, tendremos que eliminarlo.
# rm /etc/localtime
Una vez eliminado, para configurar el sistema, por ejemplo, con el uso horario de Madrid haríamos lo siguiente (ten en cuenta que aunque diferentes países compartan zona, los cambios de horario de verano e invierno pueden ser diferentes entre ellos, o darse en distintas fechas. Por eso interesa crear un enlace con el fichero adecuado):
# ln -s /usr/share/zoneinfo/Europa/Madrid /etc/localtime
Y eso es todo. Si ejecutas de nuevo el comando date, sin ningún otro parámetro, podrás comprobar la hora actual de tu sistema, y asegurarte así del éxito del cambio.
Angel Sierra
Últimos posts Angel Sierra (Ver todos)
- La piña viajera - diciembre 31, 2022
- Propaganda gratuita - enero 17, 2022
- When superheroes become humans - enero 7, 2022
Un lujo de manual. Muchas gracias
Me alegro que te haya gustado. Un placer.
Genial!.. Buscaba una solución a esto desde hace tiempo.. Gracias amigo!.
De nada!! Me alegro te haya servido!!
Excelente me funciono facil y rapido. Gracias en verdad gracias
De nada!! Gracias también a tí por leer mi blog 😉
Excelente man!