Profile picture

[Linux] 커널 로그 출력 - dmesg

JaehyoJJAng2023년 06월 03일

dmesg

dmesg(diagnostic message)는 kernel의 ring buffer를 출력하는 명령어로 부팅 시에 인식한 장치등 시스템 진단에 필요한 로그들을 제공한다.

부팅 이후에도 특정 사용자의 su 전환 실패 로그, I/O 장치 오류 등 시스템 운영에 필요한 정보를 출력하므로 익혀두는게 좋다.

kernel log 출력

옵션 없이 사용하면 커널의 로그를 출력함.

$ sudo dmesg

💡

journalctl -k 명령어도 dmesg와 동일하게 kernel의 ring buffer를 출력한다.


dmesg로 출력되는 로그의 양이 많기 때문에 내용을 검색하려면 pipe로 연결 후 grep 명령어를 실행해주면 된다.

$ sudo dmesg | grep -i "jenkins"

스크롤 하면서 천천히 보려면 lessmore 같은 pager를 파이프로 연결해주면 된다.

$ sudo dmesg | more
$ sudo dmesg | less

Level 별 출력

너무 많은 정보가 제공될 경우 level을 지정해서 원하는 레벨의 로그만 출력할 수 있다. 아래 예제는 error 레벨의 커널 로그 메시지만 출력한다.

$ sudo dmesg --level err

지원하는 로그 레벨은 --help 옵션으로 확인 가능하다.

$ sudo dmesg --help

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

facility 별 출력

로깅 시 어떤 프로그램이 로깅을 남겼는지 확인하기 위해 facility 라고 불리우는 분류 코드가 있으며 dmesg에는 -f 옵션으로 facility를 정해서 출력이 가능하다. 다음은 인증 관련한 오류만 출력하는 예제이다.

$ sudo dmesg -f auth

변경사항 대기

dmesg는 현재 로그를 출력하고 프로그램이 종료된다. 새로운 로그가 추가 되었는지 확인하려면 반복해서 dmesg를 실행해야 한다. -w 옵션을 추가하여 taif 명령어의 -f 옵션처럼 대기하며 새로운 메시지가 추가되면 콘솔에 출력한다.

$ sudo dmesg -w

Loading script...