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"
스크롤 하면서 천천히 보려면 less
나 more
같은 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