dmesg
-T
사람이 읽을 수 있는 타임스탬프를 인쇄 하는 옵션이 있으며 , 새 버전에는 --time-format
시간 형식을 변경할 수 있는 옵션이 있습니다. 예를 들면 다음과 같습니다.
--time-format iso
불행하게도 iso
시간 형식도 읽기 쉽지 않습니다. date
표준 구문을 사용하여 나만의 시간 형식을 정의 할 수 있나요 ? 지금 바로:
date +%F-%T
답변1
할 수는 없지만 dmesg
출력을 구문 분석할 수 있습니다.
dmesg --time-format iso \
| while read datestring rest; do \
printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done
답변2
gawk
awk
예, 예를 들어 다음과 같이 (GNU)를 사용하여 시간 형식을 다시 지정할 수 있습니다 .
dmesg --time-format iso | gawk '{ printf (strftime("+%F-%T",mktime(gensub("[-+T:,]"," ","g",$1)))) ; $1 = ""; print $0}'
dmesg
아래와 같이 여기에 ISO 날짜를 인쇄합니다.
2019-09-02T06:10:30,708864+02:00 this is an important message
첫 번째 문자열에서 특수 문자를 제거한 다음 mktime
( ) g
의 함수를 사용하여 awk
문자열을 날짜로 구문 분석한 다음 strftime
원하는 매개변수를 사용하여 형식을 지정합니다.
이것은 다음과 같은 것을 제공합니다
+2019-09-02-06:10:30 this is an important message
작은 메모:
여기서는 명령을 로컬로 실행하고 있기 때문에 이것이 명백하다고 가정하여 시간대를 무시합니다.
dmesg
타임스탬프가 저장되는 방식으로 인해 컴퓨터를 일시 중지했다가 깨우면 주어진 시간이 정확하지 않을 수 있습니다(사실 때로는 상당히 부정확할 수도 있음). 다음을 참조하세요dmesg(1)
.man 1 dmesg