Espero que aqui esteja alguém que possa me ajudar com esse problema estranho.
Eu acho que sei por que isso está acontecendo, mas não sei como resolvê-lo. Talvez seja porque o tempo do BIOS não está definido corretamente ou algo parecido. Mas não quero alterar o tempo do BIOS de aproximadamente 400 + servidores. (Ou mude a bateria do 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
O servidor está executando o ntp para sincronização de horário.
Alguém aqui sabe como resolver esse problema no sistema operacional?
Linux spool 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux
Por que, ao ecoar /dev/kmsg
, a data / hora da minha mensagem dmesg
não é sincronizada com a data / hora do sistema?
/etc/localtime
está correto? Asyslog
hora da hora local.journalctl -k
agora (em sistemas com journald) justamente por isso. Isso inclui a hora correta, no meu fuso horário.Respostas:
Para verificar sua teoria (que, a propósito, é sólida), execute o seguinte como root:
Isso mostrará o relógio do hardware no servidor em que você está executando o comando.
Para sincronizar o relógio do hardware com a hora do sistema (gerenciada pelo ntp), execute o seguinte comando:
O último argumento (--utc) diz ao hwclock para armazenar a hora no relógio do hardware na hora universal coordenada.
Além disso, lembre-se de que a página de manual do dmesg (1) diz o seguinte, para que o comportamento que você está enfrentando seja documentado e válido:
fonte
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
O dmesg apenas imprime o ringbuffer do kernel que registra as mensagens com tempo de atividade em segundos a partir do início como carimbo de data / hora.
Portanto, se você usar a opção -T, todos esses valores de tempo de atividade serão adicionados à data em que seu sistema foi inicializado. Se você dormiu várias vezes em suspensão ou retomada, elas serão perdidas; portanto, nesses casos, a opção -T não será útil, pois os valores de data / hora não estão corretos e voltam ao passado.
fonte
Para obter horários precisos para entradas "recentes"
dmesg
, você pode converter os carimbos de data / hora do dmesg em tempo real com alguns hackers na saída.Por "recente", quero dizer tempos após a última suspensão / retomada, pois (como outros já apontaram) os tempos de suspensão não são contados no carimbo de data / hora do dmesg.
Mas se você precisar com frequência, como em um notebook, poderá colocar algo como o seguinte em funções ou aliases:
Saída de amostra:
Em comparação com a
dmesg
saída original (que é desativada em 3 dias):fonte
dmesg
linha alternativa com regex atualizado.