[Linux] dmesg Command
dmesg
dmesg
명령어는 리눅스에서 시스템 부팅 시점부터 발생한 커널 관련 메세지를 출력하는 명령어이다. 주로 시스템 로그, 부팅 과정, 장치의 상태 및 드라이버 관련 정보를 보여준다.
Options
dmesg
의 주요 옵션은 다음과 같다.
1
2
3
4
5
6
7
8
-C, --clear: dmesg 내용 삭제
-c, --read-clear: dmesg 내용 출력 후 삭제
-k, --kernel: 커널 메세지 출력
-f, --facility <list> : 지정한 facility들에 대한 메시지 출력
-l, --level <list> : 지정한 level들에 대한 메시지 출력
-x, --decode : facility와 level(priority) 메세지 출력
-T, --ctime : 보기 좋은 타임 스탬프로 출력
-t, --notime : 타임 스탬프를 출력하지 않음
위와 같은 dmesg
에 대한 옵션의 정보들은 man dmesg
혹은 dmesg -help
로 더 자세하게 볼 수 있다. 또한, 지원되는 log facilities와 log levels (priorities) 목록은 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Supported log facilities:
kern - kernel messages
user - random user-level messages
mail - mail system
daemon - system daemons
auth - security/authorization messages
syslog - messages generated internally by syslogd
lpr - line printer subsystem
news - network news subsystem
Supported log levels (priorities):
emerg - system is unusable
alert - action must be taken immediately
crit - critical conditions
err - error conditions
warn - warning conditions
notice - normal but significant condition
info - informational
debug - debug-level messages
dmesg 분석
dmesg
가 중요한 이유는 프로그램이 비정상적으로 종료되었을 때, 어떤 원인으로 종료가 되었는지 알 수 있게 한다.
1
[66294.352667] target[434214]: segfault at 0 ip 0000000000000000 sp 00000000ffffd63c error 14 in target[8048000+1000]
위 사진은 target이라는 프로그램이 비정상적으로 종료되었을 때 나타나는 dmesg이다. 해당 메세지를 분석하면 다음과 같다.
[66294.352667]
: 타임 스탬프target[434214]
: 프로그램의 이름과 pidsegfault
: 비정상적으로 종료된 원인at 0
: 비정상적으로 종료되었을 때, 참조한 주소ip 0000000000000000
: 비정상적으로 종료되었을 때, 실행된 명령어 주소sp 00000000ffffd63c
: 비정상적으로 종료되었을 때, 스택 주소error 14
: 에러 코드in target[8048000+1000]
: 프로그램 이름과 Offset 정보