Kernel Linux adalah inti dari sistem operasi yang mengontrol akses ke sumber daya sistem, seperti CPU, perangkat I/O, memori fisik, dan file sistem. Kernel akan mencatat berbagai pesan ke kernel ring buffer selama proses boot dan selama sistem sedang berjalan. Pesan-pesan ini mencakup berbagai informasi tentang pengoperasian sistem.

kernel ring buffer adalah bagian dari memori fisik yang menyimpan pesan log kernel. Ini memiliki ukuran tetap, yang berarti setelah buffer penuh, catatan log yang lebih lama ditimpa.

Utilitas baris perintah dmesg digunakan untuk mencetak dan mengontrol kernel buffer ring di Linux dan sistem operasi Unix-like lainnya. Perintah ini berguna untuk memeriksa pesan-pesan terkait boot kernel dan men-debug masalah-masalah yang terkait dengan perangkat keras.

Dalam tutorial ini, kami akan membahas dasar-dasar perintah dmesg.

Menggunakan Perintah dmesg

Sintaks untuk perintah dmesg adalah sebagai berikut:

dmesg [OPTIONS]

Ketika dipanggil tanpa opsi apa pun, dmesg menulis semua pesan dari kernel ring buffer ke output standar:

dmesg

Secara default, semua pengguna dapat menjalankan perintah dmesg. Namun, pada beberapa sistem, akses ke dmesgmungkin dibatasi untuk user non-root. Dalam situasi ini, ketika menjalankan dmesg Anda akan mendapatkan pesan error seperti di bawah ini:

dmesg: read kernel buffer failed: Operation not permitted

Parameter kernel.dmesg_restrict menentukan apakah pengguna yang tidak berhak dapat menggunakan dmesg untuk melihat pesan dari buffer log kernel. Untuk menghapus batasan, cukup atur kernel.dmesg_restrict ke nol:

sudo sysctl -w kernel.dmesg_restrict=0

Biasanya, output berisi banyak baris informasi, jadi hanya bagian terakhir dari output yang dapat dilihat. Untuk melihat per-halaman, pipe output ke utilitas pager seperti perintah less atau more:

dmesg --color=always | less

Opsi perintah --color=always digunakan untuk mempertahankan output berwarna agar lebih mempermudah analisa.

Jika Anda ingin memfilter pesan buffer, gunakan perintah grep. Misalnya, untuk hanya melihat pesan terkait USB, Anda harus mengetik:

dmesg | grep -i usb

dmesg membaca pesan yang dihasilkan oleh kernel dari file virtual /proc/kmsg. File ini menyediakan antarmuka ke buffer cincin kernel dan dapat dibuka hanya dengan satu proses. Jika proses syslog berjalan di sistem Anda dan Anda mencoba membaca file dengan perintah  cat, atau less, perintahnya akan hang.

Daemon syslog menempatkan pesan-pesan kernel ke file /var/log/dmesg, jadi Anda juga dapat menggunakan file log itu:

cat /var/log/dmesg

Bentuk dan Format Output dmesg

Perintah dmesg menyediakan sejumlah opsi yang membantu Anda memformat dan memfilter output.

Salah satu opsi dmesg yang paling banyak digunakan adalah -H (--human), yang memungkinkan output yang bisa dibaca manusia. Opsi ini menyalurkan output menjadi perhalaman.

dmesg -H

Untuk mencetak timestamps yang dapat dibaca manusia gunakan opsi -T (--ctime) :

dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

Format timestamps juga dapat diatur menggunakan opsi --time-format, yang dapat berupa ctime, reltime, delta, notime, atau iso. Misalnya untuk menggunakan format delta, Anda mengetik:

dmesg --time-format=delta

Anda juga dapat menggabungkan dua opsi atau lebih:

dmesg -H -T

Untuk mengikuti perkembangan output dari perintah dmesg secara real-time, gunakan opsi -w (--follow):

dmesg --follow

Memfilter Output dmesg

Anda dapat membatasi output dmesg ke facilities dan levels yang diberikan.

Facilities merupakan sebutan untuk suatu proses yang menciptakan pesan log. dmesg mendukung fasilitas log berikut:

  • kern – pesan kernel
  • user – pesan tingkat user
  • mail – mail system
  • daemon – system daemons
  • auth – pesan keamanan / otorisasi
  • syslog – pesan syslogd internal
  • lpr – line printer subsystem
  • news – network news subsystem

Opsi -f (–facility <list>) memungkinkan Anda membatasi output ke fasilitas tertentu. Opsi ini menerima satu atau lebih fasilitas yang dipisahkan koma.

Misalnya, untuk hanya menampilkan pesan kernel dan daemon sistem, maka perintah yang akan Anda gunakan:

dmesg -f kern,daemon

Setiap pesan log dikaitkan dengan tingkat log yang menunjukkan pentingnya pesan. dmesg mendukung level log berikut:

  • emerg – system berhenti karena kesalahan
  • alert – tindakan tertentu harus segera diambil
  • crit – critical (kritis)
  • err – error (kesalahan)
  • warn – warning (peringatan)
  • notice – kondisi normal tetapi signifikan
  • info – informasional
  • debug – Pesan level debug

Opsi-l (--level <list>) membatasi output ke level yang ditentukan. Opsi ini menerima satu atau lebih level yang dipisahkan koma. Misal perintah berikut hanya menampilkan pesan error dan critical :

dmesg -l err,crit

Menghapus Ring Buffer

Opsi -C (--clear) memungkinkan Anda untuk menghapus ring buffer:

sudo dmesg -C

Hanya root atau user dengan hak sudo yang dapat menghapus buffer.

Untuk mencetak konten buffer sebelum membersihkan gunakan opsi -c (--read-clear):

sudo dmesg -c

Jika Anda ingin menyimpan log dmesg saat ini di file sebelum menghapusnya, arahkan output ke file:

dmesg > dmesg_pesan_log

Kesimpulan

Perintah dmesg memungkinkan Anda untuk melihat dan mengontrol kernel ring buffer. Ini bisa sangat berguna ketika memecahkan masalah kernel atau perangkat keras.

Ketik man dmesg di terminal Anda untuk informasi tentang semua opsi dmesg yang tersedia.