Fedora 29(필수로 사용해야 함)에서는 다음 과 같은 dmesg
옵션이 누락되었습니다 .--since
--until
journalctl
journalctl --since "2022-12-20 09:00:00" --until "2022-12-20 10:00:00"
내에 표시된 로그를 필터링하는 방법은 무엇입니까 dmesg
?9AM
10AM
Dec 20
답변1
긴 --time-format
옵션을 dmesg
사용할 수 있습니다다른체재:
( T
iso 형식으로 인해 날짜와 시간 사이에 공백이 없습니다.)
sed만 작동합니다로그에 한 줄과 한 줄이 있는 경우 2022-12-12T09
.2022-12-12T10
$ sudo dmesg --time-format=iso | sed -n '/2022-12-12T09/,/2022-12-12T10/p'
또한 시간 범위에 더 구체적인 내용을 추가하기 위해 유사한 작업을 수행할 수도 있습니다(여기서는 범위 내에서 지정된 시간(분)만 얻습니다.):
2022-12-12T09:16
이 경우에는 로그에 있는 줄과 줄도 필요합니다 .2022-12-12T09:24
$ sudo dmesg --time-format=iso | sed -n '/2022-12-12T09:16/,/2022-12-12T09:24/p'
~에서맨페이지
- 시간 형식format 주어진 형식(ctime, reltime, delta 또는 iso)으로 타임스탬프를 인쇄합니다. 처음 세 가지 형식은 시간 형식의 특정 옵션에 대한 별칭입니다. iso 형식은 ISO-8601 타임스탬프 형식의 dmesg 구현입니다. 이 형식의 목적은 다른 구문 분석뿐만 아니라 두 시스템 간의 타임스탬프 비교를 쉽게 만드는 것입니다. iso 타임스탬프는 YYYY-MM-DDHH:MM:SS,<-+>로 정의됩니다.
iso 형식에는 ctime과 동일한 문제가 있습니다. 시스템이 일시 중지되었다가 다시 시작될 때 시간이 정확하지 않을 수 있습니다.
답변2
특정 범위 내의 로그를 수집하기 위해 작은 스크립트를 작성했습니다.
while read line; do
d=$(echo $line | cut -d ',' -f 1)
if [[ $line =~ ^[[:digit:]] ]] && [[ `date -d "$d" +%s` > `date --date="2 hours ago" +%s` ]]
then
echo $line
fi
done < <(dmesg -T --time-format iso)
since
2시간 전의 로그 만 표시됩니다 . until
스크립트는 동일한 논리이지만 다른 수학을 사용하여 작성할 수 있습니다. 유일한 문제는 dmesg 자체보다 느리다는 것입니다.