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 dmesg
mungkin 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 kerneluser
– pesan tingkat usermail
– mail systemdaemon
– system daemonsauth
– pesan keamanan / otorisasisyslog
– pesan syslogd internallpr
– line printer subsystemnews
– 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 kesalahanalert
– tindakan tertentu harus segera diambilcrit
– critical (kritis)err
– error (kesalahan)warn
– warning (peringatan)notice
– kondisi normal tetapi signifikaninfo
– informasionaldebug
– 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.