Perintah dmesg Linux: baca pesan kernel dan log boot
Perintah dmesg membaca pesan dalam ring buffer kernel Linux untuk memeriksa pengenalan perangkat, driver, sistem berkas, dan peringatan kernel. Ring buffer adalah tempat penyimpanan berukuran terbatas; pesan lama dapat tertimpa sehingga hasilnya bukan arsip lengkap semua kejadian.
Mulailah dari pesan yang relevan dengan kejadian dan perhatikan sumber waktunya. Tidak adanya pesan pada filter tertentu tidak membuktikan sistem bebas masalah, dan kegagalan membaca karena hak akses berbeda dari hasil kueri yang memang kosong.
Sintaks dan prasyarat
dmesg [OPSI]
OPSI adalah penanda yang diganti opsi sebenarnya. Panduan ini membahas dmesg dari util-linux. Periksa dmesg --version, dmesg --help, dan man dmesg pada sistem tujuan karena opsi dapat berbeda antarimplementasi.
Sebagian sistem membatasi pembacaan log kernel, antara lain melalui kebijakan dmesg_restrict. Jika muncul Permission denied, periksa kebijakan serta akun yang berwenang; jangan menonaktifkan pembatas keamanan untuk sekadar meniru contoh.
Baca pesan dengan pager
dmesg | less
Perintah ini mengirim pesan yang terbaca ke less agar dapat ditelusuri. Gunakan tombol navigasi untuk bergerak dan q untuk keluar. Less perlu tersedia; pesan kesalahan dari dmesg tetap perlu diperhatikan meskipun pager terbuka.
Baca konteks sebelum dan sesudah pesan perangkat atau driver yang dicari. Tidak semua pesan kernel merupakan kesalahan, dan satu baris tanpa konteks sering belum cukup untuk menentukan penyebab masalah.
Saring tingkat error dan warning
dmesg --level=err,warn
Daftar err,warn memilih dua tingkat itu secara tepat. Ini bukan berarti semua tingkat yang lebih serius otomatis ikut dipilih: crit, alert, dan emerg tidak tercantum dalam daftar tersebut. Jika penyelidikan memerlukan tingkat lain, pilih daftar yang sesuai bantuan lokal atau periksa keluaran tanpa filter.
Penyaringan tingkat menggunakan prioritas pesan, bukan pencarian kata error atau warning dalam teks. Pesan yang penting untuk diagnosis dapat berada pada tingkat lain. Opsi serta arti filter dijelaskan dalam manual dmesg dari proyek util-linux.
Ikuti pesan saat kejadian berlangsung
dmesg --follow
Opsi --follow menampilkan pesan yang tersedia lalu menunggu pesan baru. Hentikan dengan Ctrl+C setelah pengamatan selesai; jangan menunggu perintah ini keluar sendiri. Untuk hanya pesan yang baru datang, periksa dukungan --follow-new pada versi lokal.
Mode follow memerlukan /dev/kmsg yang dapat dibaca. Jika tidak didukung atau akses ditolak, periksa lingkungan dan kebijakannya. Tidak munculnya baris baru dapat berarti belum ada pesan baru, bukan otomatis program macet atau perangkat rusak.
Baca cap waktu dan cuplikan hasil
dmesg --level=err,warn | tail -n 3
Tail memilih hingga tiga baris terakhir dari hasil yang sudah disaring. Ini bukan tiga baris terakhir seluruh ring buffer jika filter menghilangkan pesan lain. Contoh berikut hanya menunjukkan format satu baris, bukan kejadian yang diukur pada mesin Anda:
[ 12.345678] device: warning message
Angka dalam kurung siku pada format bawaan biasanya menunjukkan detik sejak boot, bukan jam kalender. Device dan warning message pada ilustrasi adalah teks pengganti. Gunakan nama perangkat dan pesan sebenarnya saat menelusuri kejadian.
Opsi -T mengubah tampilan menjadi waktu kalender yang mudah dibaca, tetapi konversinya dapat tidak akurat, terutama untuk pesan sebelum suspend/resume terakhir. Perubahan atau koreksi waktu juga perlu dipertimbangkan saat mencocokkan kejadian. Jangan menganggap tampilan kalender sebagai bukti ketepatan waktu yang lebih tinggi.
Untuk analisis urutan, bandingkan pesan dan sumber waktunya, serta catat boot yang diperiksa. Log ring buffer dan log yang disimpan layanan pencatatan tidak harus memiliki cakupan yang sama.
Opsi penting
| Opsi | Kegunaan |
|---|---|
--level=DAFTAR |
Memilih tingkat pesan yang ditentukan. |
-T |
Waktu kalender yang mudah dibaca, dengan keterbatasan konversi. |
-H |
Tampilan untuk manusia; pager digunakan secara bawaan. |
-w |
Bentuk singkat --follow untuk menunggu pesan baru. |
-k |
Memilih pesan kernel. |
Jangan tertukar huruf besar dan kecil: -c membaca lalu membersihkan buffer, sedangkan -C atau --clear membersihkannya. Keduanya mengubah keadaan buffer dan tidak diperlukan untuk pemeriksaan biasa. Mode tampilan dalam contoh di atas tidak meminta pembersihan.
Pesan kosong, hak akses, dan boot sebelumnya
Jika hasil filter kosong, jalankan pemeriksaan tanpa filter dan baca pesan kesalahannya. Penyebabnya dapat berupa tidak adanya prioritas yang dipilih, pesan lama yang tertimpa, atau kegagalan akses. Dalam pipeline, keberhasilan perintah terakhir tidak otomatis membuktikan dmesg sebelumnya berhasil.
Untuk boot sebelumnya, ring buffer saat ini bukan pengganti arsip. Jika journal menyimpan boot yang dimaksud, gunakan journalctl -k -b -1. -k memilih pesan kernel dan -b -1 memilih boot sebelumnya. Periksa daftar boot yang tersedia dengan journalctl --list-boots; tanpa data yang disimpan, perintah tidak dapat memulihkan pesan yang telah hilang.
Rincian pemilihan boot dan pesan kernel tersedia dalam manual resmi journalctl. Linux Factory juga menyediakan panduan journalctl dalam bahasa Inggris.
Dalam kontainer atau lingkungan terbatas, akses log kernel dapat berbeda dari host. Tentukan lingkungan asal pesan sebelum menyimpulkan bahwa hasilnya mewakili seluruh host atau suatu aplikasi tertentu.
FAQ
Apakah dmesg sama dengan journalctl -k?
Dmesg membaca ring buffer kernel, sedangkan journalctl -k menanyakan entri kernel yang telah dikumpulkan journal. Cakupan waktu dan ketersediaan data dapat berbeda.
Apakah err,warn mencakup semua pesan kritis?
Tidak. Daftar itu hanya memilih tingkat err dan warn. Periksa prioritas lain atau keluaran tanpa filter agar pesan yang relevan tidak terlewat.




