7 'dmesg'-kommandoer for feilsøking og innsamling av informasjon om Linux-systemer


«dmesg»-kommandoen viser meldingene fra kjerneringbufferen. Et system passerer flere kjørenivåer hvorfra vi kan få mye informasjon som systemarkitektur, cpu, tilkoblet enhet, RAM osv. Når datamaskinen starter opp, blir en kjerne (kjerne i et operativsystem) lastet inn i minnet. I løpet av den perioden vises antall meldinger der vi kan se maskinvareenheter oppdaget av kjernen.

Les også: 10 Linux-kommandoer for å samle system- og maskinvareinformasjon

Meldingene er svært viktige når det gjelder diagnostiseringsformål i tilfelle enhetsfeil. Når vi kobler til eller kobler fra maskinvareenheten på systemet, ved hjelp av dmesg-kommandoen blir vi kjent med oppdaget eller frakoblet informasjon i farten. Kommandoen dmesg er tilgjengelig på de fleste Linux- og Unix-baserte operativsystemer.

La oss kaste lys over det mest kjente verktøyet kalt "dmesg"-kommandoen med deres praktiske eksempler som diskutert nedenfor. Den nøyaktige syntaksen til dmesg som følger.

dmseg [options...]

1. List alle innlastede drivere i kjernen

Vi kan bruke tekstmanipuleringsverktøy, dvs. "mer", "hale", "mindre" eller "grep ' med dmesg-kommandoen. Siden utdata fra dmesg-logg ikke får plass på en enkelt side, vil bruk av dmesg med pipe more eller less-kommando vise logger på en enkelt side.

[[email  ~]# dmesg | more
[[email  ~]# dmesg | less
Eksempelutgang
[    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
.....

Les også: Administrer Linux-filer effektivt ved å bruke kommandoer head, tail og cat

2. List opp alle oppdagede enheter

For å finne ut hvilke harddisker som har blitt oppdaget av kjernen, kan du søke etter nøkkelordet «sda» sammen med «grep» som vist nedenfor.

[[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)

MERK: Den 'sda' første SATA-harddisken, 'sdb' er den andre SATA-harddisken og så videre. Søk med "hda" eller "hdb" når det gjelder IDE-harddisk.

3. Skriv ut kun de første 20 utskriftslinjene

'Hodet' sammen med dmesg vil vise startlinjer, dvs. 'dmesg | head -20' vil skrive ut bare 20 linjer fra startpunktet.

[[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. Skriv ut kun siste 20 linjer med utskrift

'hale' sammen med dmesg-kommandoen vil bare skrive ut 20 siste linjer, dette er nyttig i tilfelle vi setter inn flyttbar enhet.

[[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. Søk på oppdaget enhet eller bestemt streng

Det er vanskelig å søke i en bestemt streng på grunn av lengden på dmesg-utdata. Så filtrer linjene med strenger som «usb» «dma» «tty» og «minne ' osv. '-i'-alternativet instruerer til grep-kommandoen for å ignorere store og små bokstaver (store eller små bokstaver).

[[email  log]# dmesg | grep -i usb
[[email  log]# dmesg | grep -i dma
[[email  log]# dmesg | grep -i tty
[[email  log]# dmesg | grep -i memory
Eksempelutgang
[    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. Fjern dmesg-bufferlogger

Ja, vi kan slette dmesg-logger om nødvendig med kommandoen nedenfor. Det vil tømme dmesg ring buffer meldingslogger til du utførte kommandoen nedenfor. Fortsatt kan du se logger som er lagret i «/var/log/dmesg»-filer. Hvis du kobler til en enhet vil det generere dmesg-utgang.

[[email  log]# dmesg -c

7. Overvåking av dmesg i sanntid

Noen distroer tillater kommandoen 'tail -f /var/log/dmesg' også for sanntidsdmesg-overvåking.

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

Konklusjon: dmesg-kommandoen er nyttig da dmesg registrerer alle systemendringene som er gjort eller skjer i sanntid. Som alltid kan du man dmesg for å få mer informasjon.