Vamos a ver como sacar información hardware en Linux por línea de comandos. Mostraremos la info de tarjetas de red, CPUs, memoria, discos duros, controladoras RAID, BUS PCI, USBs, DVDs… En anteriores entradas ya he enseñado algunos trucos para sacar información del hardware en sistemas GNU/Linux, por ejemplo usando el comando dmidecode.
El filesystem proc (/proc) ofrece mucha información del hardware de la máquina en la que se está ejecutando el sistema operativo. La información de hardware se recupera de archivos dinámicos como /proc/cpuinfo ó /proc/meminfo.
Información de CPU en /proc/cpuinfo
El kernel Linux vuelva en este fichero toda la información de cada una de las CPUs del sistema. Estas CPUs pueden ser tanto cores de un procesador (dual core, quad core…), CPUs físicas… lo importante es verificar los valores de CPU Cores y Core ID para verificar estos puntos y localizar cada una de las CPU.
Ejemplo de CPU en /proc/cpuinfo:
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz stepping : 5 cpu MHz : 1197.000 cache size : 3072 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida arat dts tpr_shadow vnmi flexpriority ept vpid bogomips : 5054.13 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management:
Información de MEMORIA en /proc/meminfo
Toda la información de memoria del sistema se vuelca en este archivos. Como todo lo que hay en /proc, es un archivo dinámico que el kernel actualizará según necesidad:
$ cat /proc/meminfo MemTotal: 3853368 kB MemFree: 2128472 kB Buffers: 135832 kB Cached: 693768 kB SwapCached: 0 kB Active: 973180 kB Inactive: 559568 kB Active(anon): 706460 kB Inactive(anon): 131452 kB Active(file): 266720 kB Inactive(file): 428116 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 3986428 kB SwapFree: 3986428 kB Dirty: 16 kB Writeback: 0 kB AnonPages: 702964 kB Mapped: 133204 kB Shmem: 134776 kB Slab: 50172 kB SReclaimable: 29460 kB SUnreclaim: 20712 kB KernelStack: 2656 kB PageTables: 18644 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 5913112 kB Committed_AS: 2087252 kB VmallocTotal: 34359738367 kB VmallocUsed: 572320 kB VmallocChunk: 34359151204 kB HardwareCorrupted: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 63488 kB DirectMap2M: 3926016 kB
En la documentación de CentOS explican perfectamente cada uno de los campos. Algunos importantes:
- MemTotal: cantidad total de memoria RAM en KB
- MemFree: cantidad de memoria RAM libre en KB
- Buffers: cantidad de memoria RAM usada para buffers de ficheros
- Cached: cantidad de memoria RAM usada para cachés.
- SwapTotal: cantidad total de memoria SWAP
- SwapFree: cantidad total de memoria SWAP libre
Información de tarjetas de red con lspci y ethtool
El comando lspci muestra un listado de todos los dispositivos PCI del sistema, así que podemos ver la información de las tarjetas de red:
$ lspci | egrep -i 'ethernet|network' 12:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01) 13:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
Además, con ethtool podemos ver información detallada del estado de la interfaz de red asociada a las tarjetas:
$ ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: No Link partner advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on
Información de tarjetas de discos y controladoras con smartctl
Comandos como fdisk nos muestran información de los discos, pero no indican datos de fabricante o información avanzada como el modelo del disco, la marca, el número de serie, el ID de lun WWN, versión de firmware. Para eso tenemos el comando smartctl. Hay sistemas en los que esta herramienta no está instalada por defecto, su instalación se puede hacer a través del paquete smartmontools:
# apt-cache search smartctl smartmontools - control and monitor storage systems using S.M.A.R.T.
La cantidad de información que ofrece el comando es brutal, Número de serie, marca y modelo, versión de firmware, capacidad total, tiempo total de uso del disco y además muestra un log detallado con errores ocurridos en el disco entre otras cosas. Os dejo una parte del output del comando porque es muy extenso:
# smartctl -a /dev/sda smartctl 5.41 2011-06-09 r3365 [i686-linux-3.2.0-23-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Model Family: Western Digital Scorpio Blue Serial ATA Device Model: WDC WD1600BEVS-60RST0 Serial Number: WD-XXXXXXXXX LU WWN Device Id: 5 0014ee 200b6fd70 Firmware Version: 04.01G04 User Capacity: 160,041,885,696 bytes [160 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: 7 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Fri Sep 5 18:19:41 2014 CEST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED See vendor-specific Attribute list for marginal Attributes.
Infomación de DMIDECODE ver post
El comando dmidecode es muy potente y nos permite visualizar de una sola vez toda la información de hardware del sistema. dmidecode extrae la información de la BIOS a través del estándar SMBIOS / DMI. Sólo para que veáis toda la información que podemos extraer con el comando, os dejo todos lo que dumpea el comando:
The SMBIOS specification defines the following DMI types: Type Information ──────────────────────────────────────── 0 BIOS 1 System 2 Base Board 3 Chassis 4 Processor 5 Memory Controller 6 Memory Module 7 Cache 8 Port Connector 9 System Slots 10 On Board Devices 11 OEM Strings 12 System Configuration Options 13 BIOS Language 14 Group Associations 15 System Event Log 16 Physical Memory Array 17 Memory Device 18 32-bit Memory Error 19 Memory Array Mapped Address 20 Memory Device Mapped Address 21 Built-in Pointing Device 22 Portable Battery 23 System Reset 24 Hardware Security 25 System Power Controls 26 Voltage Probe 27 Cooling Device 28 Temperature Probe 29 Electrical Current Probe 30 Out-of-band Remote Access 31 Boot Integrity Services 32 System Boot 33 64-bit Memory Error 34 Management Device 35 Management Device Component 36 Management Device Threshold Data 37 Memory Channel 38 IPMI Device 39 Power Supply 40 Additional Information 41 Onboard Device
Simplemente ejecutando «dmidecode», sin más, el dump generado muestra toda esa información del sistema. Si queréis filtrar simplemente con el parámetero «-t <type» sacáis la info de algo concreto:
# dmidecode -t system # dmidecode 2.11 SMBIOS 2.4 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Hewlett-Packard Product Name: HP Pavilion dv6500 Notebook PC Version: Rev 1 Serial Number: XXXXXXXXXXXX UUID: XXXXXXXXXX Wake-up Type: Power Switch SKU Number: XXXXX#ABE Family: 103C_5335KV Handle 0x0011, DMI type 32, 20 bytes System Boot Information Status:
Con estos comandos estáis cubiertos para sacar toda la información de Hardware del sistema que necesitéis a través de la línea de comandos de Linux.
Interesante post. yo tambien uso el comando inxi
inxi -F
inxi -S
…
Otros: lshw, hdparm.
¡Gracias a ambos por ampliar la info!