7 Perintah 'dmesg' untuk Mengatasi Masalah dan Mengumpulkan Informasi Sistem Linux


Perintah 'dmesg' menampilkan pesan dari buffer ring kernel. Sebuah sistem melewati beberapa runlevel dari mana kita bisa mendapatkan banyak informasi seperti arsitektur sistem, cpu, perangkat yang terpasang, RAM, dll. Saat komputer boot, kernel (inti dari sistem operasi) dimuat ke dalam memori. Selama periode tersebut sejumlah pesan ditampilkan di mana kita dapat melihat perangkat keras terdeteksi oleh kernel.

Baca Juga: 10 Perintah Linux untuk Mengumpulkan Informasi Sistem dan Perangkat Keras

Pesan-pesan tersebut sangat penting dalam hal tujuan diagnosis jika terjadi kegagalan perangkat. Saat kita menyambungkan atau memutuskan sambungan perangkat keras pada sistem, dengan bantuan perintah dmesg kita mengetahui informasi yang terdeteksi atau terputus dengan cepat. Perintah dmesg tersedia di sebagian besar Sistem Operasi berbasis Linux dan Unix.

Mari kita bahas alat paling terkenal yang disebut perintah 'dmesg' dengan contoh praktisnya seperti yang dibahas di bawah ini. Sintaks sebenarnya dari dmesg sebagai berikut.

dmseg [options...]

1. Daftar semua Driver yang dimuat di Kernel

Kita dapat menggunakan alat manipulasi teks seperti 'more', 'tail', 'less' atau 'grep ' dengan perintah dmesg. Karena keluaran log dmesg tidak muat pada satu halaman, menggunakan perintah dmesg dengan pipa lebih atau kurang akan menampilkan log dalam satu halaman.

[[email  ~]# dmesg | more
[[email  ~]# dmesg | less
Contoh Keluaran
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.11.0-13-generic (buildd@aatxe) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 17:26:33 UTC 2013 
(Ubuntu 3.11.0-13.20-generic 3.11.6)
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   NSC Geode by NSC
[    0.000000]   Cyrix CyrixInstead
[    0.000000]   Centaur CentaurHauls
[    0.000000]   Transmeta GenuineTMx86
[    0.000000]   Transmeta TransmetaCPU
[    0.000000]   UMC UMC UMC UMC
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007dc08bff] usable
[    0.000000] BIOS-e820: [mem 0x000000007dc08c00-0x000000007dc5cbff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007dc5cc00-0x000000007dc5ebff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007dc5ec00-0x000000007fffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fed003ff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed20000-0x00000000fed9ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000feefffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffb00000-0x00000000ffffffff] reserved
[    0.000000] NX (Execute Disable) protection: active
.....

Baca Juga: Kelola File Linux Secara Efektif menggunakan perintah head, tail dan cat

2. Daftar semua Perangkat yang Terdeteksi

Untuk mengetahui hard disk mana yang terdeteksi oleh kernel, Anda dapat mencari kata kunci “sda” bersama dengan “grep” seperti gambar di bawah ini.

[[email  ~]# dmesg | grep sda

[    1.280971] sd 2:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)
[    1.281014] sd 2:0:0:0: [sda] Write Protect is off
[    1.281016] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.281039] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.359585]  sda: sda1 sda2 < sda5 sda6 sda7 sda8 >
[    1.360052] sd 2:0:0:0: [sda] Attached SCSI disk
[    2.347887] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[   22.928440] Adding 3905532k swap on /dev/sda6.  Priority:-1 extents:1 across:3905532k FS
[   23.950543] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[   24.134016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
[   24.330762] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null)
[   24.561015] EXT4-fs (sda8): mounted filesystem with ordered data mode. Opts: (null)

CATATAN: Hard drive SATA pertama ‘sda’, ‘sdb’ adalah hard drive SATA kedua dan seterusnya. Cari dengan 'hda' atau 'hdb' untuk hard drive IDE.

3. Cetak Hanya 20 Baris Keluaran Pertama

'Head' bersama dengan dmesg akan menampilkan garis awal yaitu 'dmesg | head -20' hanya akan mencetak 20 baris dari titik awal.

[[email  ~]# dmesg | head  -20

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.11.0-13-generic (buildd@aatxe) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 17:26:33 UTC 2013 (Ubuntu 3.11.0-13.20-generic 3.11.6)
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   NSC Geode by NSC
[    0.000000]   Cyrix CyrixInstead
[    0.000000]   Centaur CentaurHauls
[    0.000000]   Transmeta GenuineTMx86
[    0.000000]   Transmeta TransmetaCPU
[    0.000000]   UMC UMC UMC UMC
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007dc08bff] usable
[    0.000000] BIOS-e820: [mem 0x000000007dc08c00-0x000000007dc5cbff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007dc5cc00-0x000000007dc5ebff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007dc5ec00-0x000000007fffffff] reserved

4. Cetak Hanya 20 Baris Keluaran Terakhir

Perintah 'tail' dan dmesg hanya akan mencetak 20 baris terakhir, ini berguna jika kita memasukkan perangkat yang dapat dilepas.

[[email  ~]# dmesg | tail -20

parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
ppdev: user-space parallel port driver
EXT4-fs (sda1): mounted filesystem with ordered data mode
Adding 2097144k swap on /dev/sda2.  Priority:-1 extents:1 across:2097144k
readahead-disable-service: delaying service auditd
ip_tables: (C) 2000-2006 Netfilter Core Team
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Slow work thread pool: Starting up
Slow work thread pool: Ready
FS-Cache: Loaded
CacheFiles: Loaded
CacheFiles: Security denies permission to nominate security context: error -95
eth0: no IPv6 routers present
type=1305 audit(1398268784.593:18630): audit_enabled=0 old=1 auid=4294967295 ses=4294967295 res=1
readahead-collector: starting delayed service auditd
readahead-collector: sorting
readahead-collector: finished

5. Cari Perangkat Terdeteksi atau String Tertentu

Sulit untuk mencari string tertentu karena panjang keluaran dmesg. Jadi, filter baris dengan string seperti 'usb' 'dma' 'tty' dan 'memory ' dll. Opsi '-i' menginstruksikan perintah grep untuk mengabaikan huruf besar-kecil (huruf besar atau kecil).

[[email  log]# dmesg | grep -i usb
[[email  log]# dmesg | grep -i dma
[[email  log]# dmesg | grep -i tty
[[email  log]# dmesg | grep -i memory
Contoh Keluaran
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x01ffffff]
[    0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000] init_memory_mapping: [mem 0x37800000-0x379fffff]
[    0.000000] init_memory_mapping: [mem 0x34000000-0x377fffff]
[    0.000000] init_memory_mapping: [mem 0x00100000-0x33ffffff]
[    0.000000] init_memory_mapping: [mem 0x37a00000-0x37bfdfff]
[    0.000000] Early memory node ranges
[    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x000effff]
[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Memory: 2003288K/2059928K available (6352K kernel code, 607K rwdata, 2640K rodata, 880K init, 908K bss, 56640K reserved, 1146920K highmem)
[    0.000000] virtual kernel memory layout:
[    0.004291] Initializing cgroup subsys memory
[    0.004609] Freeing SMP alternatives memory: 28K (c1a3e000 - c1a45000)
[    0.899622] Freeing initrd memory: 23616K (f51d0000 - f68e0000)
[    0.899813] Scanning for low memory corruption every 60 seconds
[    0.946323] agpgart-intel 0000:00:00.0: detected 32768K stolen memory
[    1.360318] Freeing unused kernel memory: 880K (c1962000 - c1a3e000)
[    1.429066] [drm] Memory usable by graphics device = 2048M

6. Hapus Log Buffer dmesg

Ya, kami dapat menghapus log dmesg jika diperlukan dengan perintah di bawah ini. Ini akan menghapus log pesan buffer ring dmesg sampai Anda menjalankan perintah di bawah ini. Anda tetap dapat melihat log yang disimpan di file '/var/log/dmesg'. Jika Anda menghubungkan perangkat apa pun akan menghasilkan keluaran dmesg.

[[email  log]# dmesg -c

7. Memantau pesan secara Real Time

Beberapa distro mengizinkan perintah 'tail -f /var/log/dmesg' juga untuk pemantauan dmesg waktu nyata.

[[email  log]# watch "dmesg | tail -20"

Kesimpulan: Perintah dmesg berguna karena dmesg mencatat semua perubahan sistem yang dilakukan atau terjadi secara real-time. Seperti biasa, Anda dapat man dmesg untuk mendapatkan informasi lebih lanjut.