Respostas:
Parece que foi implementado recentemente para Quantal (12.10): veja http://brainstorm.ubuntu.com/idea/17829/ .
Basicamente, dmesg
é relatado ter um novo switch -T, --ctime
.
Editar. Como outra extensão da resposta de Ignacio, aqui estão alguns scripts para aprimorar a saída do dmesg em sistemas mais antigos.
(Nota: para a versão python do código mostrado lá, será necessário substituir <
e >
voltar <>
para torná-lo utilizável novamente.)
Finalmente, por um único valor, como 600711.395348
se poderia fazer
ut=`cut -d' ' -f1 </proc/uptime`
ts=`date +%s`
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"
e obtenha a data e hora do evento.
(Observe que, devido a erros de arredondamento, o último segundo dígito provavelmente não será preciso.).
Editar (2) : Observe que, conforme o comentário de Womble abaixo, isso só funcionará se a máquina não tiver sido hibernada, etc. (Nesse caso, é melhor examinar as syslog
configurações /etc/*syslog*
e verificar os arquivos apropriados. : dmesg vs / var / messages .)
date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
%Z
, deve ser UTC
, pois date +%s
retorna segundos desde o UTC. Teria então que ser convertido no fuso horário local.
Para estender a resposta de Ignacio, as entradas contidas dmesg
normalmente também são registradas em outro local do sistema, via syslog, que fornecerá um carimbo de data / hora "real". A menos Ubuntu mudaram o padrão Debian-set, as entradas de log deve estar em /var/log/kern.log
.
O tempo indicado no dmesg é em segundos desde a inicialização do kernel. Portanto, adicione apenas alguns segundos ao momento em que o kernel começou a ser executado (dica: tempo de atividade).
No busybox, o liner 3 acima não funcionou, então aqui está a minha maneira de calculá-lo uma vez (substitua 1628880.0
pelo dmesg
timestamp):
perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'
Eu sei que isso agora é antigo, mas o dmesg agora possui uma opção -e ou --reatime para exibir a hora no horário local.
root@bbs:/var/log# dmesg|tail -1
[50755952.379177] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB
root@bbs:/var/log# dmesg -e|tail -1
[Feb20 17:10] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB