--- title: dmesg — 커널 메시지 확인 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 커널이 남긴 하드웨어·드라이버·OOM 메시지를 확인하는 명령어. 원인 모를 재부팅 진단에 필수. tags: 프로그램, 서버 로그 기록 및 분석, dmesg --- **💬 "dmesg 명령어"** dmesg는 **커널 링 버퍼** 메시지를 보여줍니다. 디스크 오류, 네트워크 링크, OOM kill 같은 정보가 여기 남습니다. 사용자 공간 애플리케이션 로그와 별개이므로, 원인 모를 문제에서 함께 봐야 합니다. - **개념**: 커널이 출력한 메시지를 시간순으로 보여줍니다. - **왼쪽**: [ 12.345678] 형식의 커널 시간(부팅 후 경과 초)입니다. - **내용**: 드라이버, 디스크 I/O 오류, OOM killer, 링크 상태 등입니다. - **-T**: 사람이 읽는 실제 시각으로 변환해 보여줍니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -T | 타임스탬프를 실제 시각으로 변환 | | -l err,warn | 특정 레벨만 표시합니다 | | -k | 커널 메시지만 표시 | | -w / --follow | 새 메시지를 실시간으로 follow합니다 | ## 필수 명령어 조합 3가지 - `dmesg -T | tail -50` — 최근 커널 메시지 확인 - `dmesg -T | grep -i -E 'oom|killed process'` — OOM kill 발생 여부 확인 - `dmesg -T | grep -i -E 'error|fail|i/o'` — 하드웨어·I/O 오류 찾기 **💬 "이 명령을 안전하게 되돌리는 예시 보여줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 최근 메시지 확인 부팅/장치 관련 최근 로그를 봅니다. ``` dmesg -T | tail -50 ``` ### 2단계 · OOM 여부 확인 메모리 부족으로 프로세스가 죽었는지 봅니다. ``` dmesg -T | grep -i -E 'oom|killed process' ``` ### 3단계 · 디스크 오류 확인 I/O 오류가 있는지 확인합니다. ``` dmesg -T | grep -i -E 'i/o error|medium error|ata' ``` ## 실무에서는 이렇게 씁니다 ### 1. 프로세스가 갑자기 죽음 **상황** — 앱 프로세스가 예고 없이 종료됩니다. ``` dmesg -T | grep -i -E 'oom|killed process' ``` **결과** — Out of memory: Killed process 메시지가 있으면 OOM killer가 종료시킨 것입니다. **포인트** — 메모리 사용량과 함께 확인하고, 필요하면 스왑이나 메모리 제한을 조정합니다. ### 2. 원인 모를 재부팅 **상황** — 서버가 새벽에 재부팅된 기록이 있습니다. ``` dmesg -T | head -30 ``` **결과** — 부팅 초기 메시지에서 하드웨어 초기화와 이전 셧다운 흔적을 확인합니다. **포인트** — journalctl --list-boots와 함께 보면 재부팅 시점을 정확히 알 수 있습니다. ## 주의할 점 - 링 버퍼는 크기가 제한되어 오래된 메시지는 사라집니다. 영구 보관은 journal/rsyslog를 씁니다. - 커널 시간만 보면 실제 시각을 알기 어려우므로 -T를 씁니다. - 일부 배포판은 dmesg 접근에 권한 제한(kernel.dmesg_restrict)이 있습니다. ## 실제 실행 화면 OOM kill과 디스크 I/O 오류를 확인한 결과입니다. ![dmesg 명령어 실행 결과: 커널 OOM·I/O 오류](https://games.cursorai.co.kr/assets/dmesg-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/logs/dmesg.html