Estou tentando entender o carimbo de data / hora dmesg e acho difícil convertê-lo para alterá-lo para o formato de data / data java customizado.
Qualquer ajuda é muito apreciada.
Amostra de log dmesg:
[14614.647880] airo(eth1): link lost (missed beacons)
Obrigado!
dmesg
deutil-linux 2.20.1
no Ubuntu 13.04)rpm -qf /bin/dmesg => util-linux-2.13-0.56.0.2.el5
util-linux 2.20
, de acordo com as Notas de Lançamento: ftp.kernel.org/pub/linux/utils/util-linux/v2.20/…Com a ajuda de dr answer, escrevi uma solução alternativa que faz a conversão para colocar em seu .bashrc. Não vai quebrar nada se você não tiver nenhum carimbo de data / hora ou já estiver correto.
Além disso, uma boa leitura sobre a lógica de conversão de carimbo de data / hora dmesg e como habilitar carimbos de data / hora quando não houver nenhum: https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk92677
fonte
local dmesg_bin=$(type -a dmesg | awk 'END { print $NF }')
type
overwhich
, consulte esta pergunta . Eu editei minha resposta para evitar o tubo triplo inútil.Para sistemas sem "dmesg -T", como RHEL / CentOS 6, gostei da função "dmesg_with_human_timestamps" fornecida por lucas-cimon anteriormente. Ele tem alguns problemas com algumas de nossas caixas com grande tempo de atividade. Acontece que os timestamps do kernel em dmesg são derivados de um valor de tempo de atividade mantido por CPUs individuais. Com o tempo, isso fica fora de sincronia com o relógio em tempo real. Como resultado, a conversão mais precisa para entradas dmesg recentes será baseada no clock da CPU em vez de / proc / uptime. Por exemplo, em uma caixa CentOS 6.6 particular aqui:
Considerando o tempo de atividade da CPU em milissegundos, há um deslocamento de quase 5 horas e meia aqui. Então, revisei o script e o converti em bash nativo no processo:
fonte
Então, KevZero solicitou uma solução menos confusa, então eu vim com o seguinte:
Aqui está um exemplo:
Se você quiser que ele tenha um desempenho um pouco melhor, coloque o carimbo de data / hora de proc em uma variável ao invés :)
fonte
Nas versões recentes do dmesg, você pode simplesmente ligar
dmesg -T
.fonte
Se você não tem a
-T
opção dedmesg
como por exemplo no Andoid, você pode usar abusybox
versão. O seguinte resolve também alguns outros problemas:[0.0000]
formato é precedido por algo que parece informações de cores perdidas, prefixos como<6>
.É inspirado nesta postagem do blog .
Observe, no entanto, que essa implementação é bastante lenta.
fonte
você precisará fazer referência ao "btime" em / proc / stat, que é o tempo de época do Unix em que o sistema foi inicializado pela última vez. Em seguida, você pode basear-se no tempo de inicialização do sistema e adicionar os segundos decorridos fornecidos em dmesg para calcular a data e hora de cada evento.
fonte
Com distros Linux mais antigas, outra opção é usar o script de empacotamento, por exemplo, em Perl ou Python.
Veja as soluções aqui:
http://linuxaria.com/article/how-to-make-dmesg-timestamp-human-readable?lang=en http://jmorano.moretrix.com/2012/03/dmesg-human-readable-timestamps/
fonte