Espero que haya alguien que pueda ayudarme con este extraño problema.
Creo que sé por qué está sucediendo, pero no sé cómo resolverlo. Tal vez sea porque el tiempo del BIOS no está configurado correctamente o algo así. Pero no quiero cambiar el tiempo de BIOS de aproximadamente más de 400 servidores. (O cambie la batería del BIOS)
root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 04:57:03 2014] TEST
root@spool:~# date
Mon Feb 17 11:45:17 CET 2014
El servidor ejecuta ntp para sincronización horaria.
¿Alguien aquí que sepa cómo solucionar este problema en el sistema operativo?
Linux spool 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux
¿Por qué, al hacer eco /dev/kmsg
, la fecha / hora de mi mensaje dmesg
no está sincronizada con la fecha / hora del sistema?
/etc/localtime
es correcto? Elsyslog
tiempo se obtiene de localtime.journalctl -k
Tiendo a usar ahora (en sistemas con journald) precisamente por esto. Esto incluye la hora correcta, en mi zona horaria.Respuestas:
Para verificar su teoría (que, por cierto, es sólida), ejecute lo siguiente como root:
Esto le mostrará su reloj de hardware en el servidor donde está ejecutando el comando.
Para sincronizar su reloj de hardware con su hora del sistema (que es administrado por ntp), ejecute el siguiente comando:
El último argumento (--utc) le dice a hwclock que almacene la hora en el reloj de hardware en hora universal coordinada.
Además, tenga en cuenta que la página de manual de dmesg (1) dice lo siguiente, para que el comportamiento que está experimentando esté documentado y sea válido:
fuente
root@spool:~# hwclock --show
Mon Feb 17 20:30:14 2014 -0.985068 seconds
root@spool:~# hwclock --systohc --utc
root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 13:50:14 2014] TEST
root@spool:~# date
Mon Feb 17 20:30:46 CET 2014
dmesg solo imprime el kernel ringbuffer que registra los mensajes con tiempo de actividad en segundos desde que se inicia como marca de tiempo.
Entonces, si usa la opción -T, todos estos valores de tiempo de actividad se agregan a la fecha en que se inició su sistema. Si ha tenido momentos de suspensión o suspensión, se pierden, por lo que en este caso, la opción -T no es útil, ya que los valores de fecha / hora no son correctos en ese momento.
fuente
Para obtener tiempos precisos para las entradas "recientes"
dmesg
, puede convertir las marcas de tiempo dmesg a tiempo real con algún hackeo de la salida.Por "reciente", me refiero a los tiempos posteriores a la última suspensión / reanudación, ya que (como ya señalaron otros) los tiempos de suspensión no se cuentan en la marca de tiempo dmesg.
Pero si lo necesita con frecuencia, como en un cuaderno, puede poner algo como lo siguiente en funciones o alias:
Salida de muestra:
En comparación con la
dmesg
salida original (que está apagada por 3 días):fuente
dmesg
línea alternativa con expresiones regulares actualizadas.