Antes de tocar un sistema que no conoces —ya sea un servidor heredado, una máquina nueva que acaba de llegar o un contenedor con comportamiento extraño— necesitas responder preguntas básicas: ¿qué kernel corre?, ¿cuántos núcleos tiene?, ¿qué distribución es exactamente?, ¿cuánto tiempo lleva encendido? Linux tiene herramientas específicas para cada una de esas preguntas, y saber cuál usar en cada caso te ahorra tiempo.
La mayoría de estos comandos leen información que el kernel expone en /proc y /sys, o que el firmware del hardware publica a través de SMBIOS (la interfaz estándar por la que la placa base le comunica al sistema operativo quién es el fabricante, el modelo y el número de serie). No modifican nada; son de solo lectura. La excepción es hostnamectl set-hostname, que sí escribe en disco de forma persistente.
Úsalos en el momento en que llegas a una máquina desconocida, cuando preparas un informe de inventario, cuando abres un ticket de soporte y necesitas adjuntar contexto, o cuando un script necesita tomar decisiones basadas en la arquitectura o la distribución. El riesgo de equivocarse aquí no es dañar el sistema —no puedes romper nada leyendo— sino malinterpretar la salida: por ejemplo, confundir threads con cores físicos al dimensionar cargas de trabajo, o leer el hostname incorrecto antes de renombrarlo.
#!/bin/bash # Recorrido de inspección básica de un sistema Debian desconocido # ── Kernel ──────────────────────────────────────────────────────────────── uname -a # Ejemplo de salida: # Linux webprod01 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux # Campos: nombre-host versión-kernel fecha-compilación arquitectura # ── Host y sistema operativo ────────────────────────────────────────────── hostnamectl # Muestra: nombre del host, tipo de máquina (físico/VM/contenedor), # versión del SO, versión del kernel y arquitectura de forma legible. # Cambiar el hostname de forma persistente (escribe en /etc/hostname y # notifica a systemd-hostnamed; no requiere reinicio): # hostnamectl set-hostname webprod01.ejemplo.com # Para identificar la distribución en un script, evita parsear hostnamectl; # usa el fichero estándar que todas las distribuciones modernas incluyen: source /etc/os-release echo "Distribución: $NAME" echo "Versión: $VERSION_ID" # En Debian Bookworm: "Debian GNU/Linux" y "12" # ── CPU ─────────────────────────────────────────────────────────────────── lscpu # Fíjate especialmente en estas líneas: # Architecture: x86_64 # CPU(s): 8 ← total de CPUs lógicas (lo que ve el SO) # Thread(s) per core: 2 ← si es 2, hay hyperthreading activo # Core(s) per socket: 4 ← núcleos físicos por procesador # Socket(s): 1 ← procesadores físicos en la placa # CPU max MHz: 4700.0000 # L3 cache: 12 MiB # CPUs lógicas = Sockets × Cores/socket × Threads/core # En este ejemplo: 1 × 4 × 2 = 8 # ── Memoria ─────────────────────────────────────────────────────────────── lsmem --summary # Muestra los rangos de memoria física y el total online/offline. # Más legible que /proc/meminfo para una inspección rápida de hardware. # ── Dispositivos PCI (tarjetas, controladores) ──────────────────────────── lspci # Sin opciones lista todos los dispositivos. Con -v añade detalles del driver. # Para buscar solo tarjetas de red: lspci | grep -i ethernet # ── Dispositivos USB ────────────────────────────────────────────────────── lsusb # Lista hubs y dispositivos conectados. Útil para confirmar que el sistema # reconoce un adaptador USB o una llave de cifrado hardware. # ── Información del fabricante vía SMBIOS (requiere root) ───────────────── sudo dmidecode -t system # Muestra: fabricante, nombre del producto, versión, número de serie y UUID. # En bare metal obtienes el número de serie real de Dell/HP/Lenovo/etc. # En una VM verás el UUID del hipervisor en lugar de hardware físico. # ── Tiempo de actividad y carga ─────────────────────────────────────────── uptime # Ejemplo de salida: # 14:23:05 up 42 days, 3:17, 2 users, load average: 0.45, 0.60, 0.72 # ↑1m ↑5m ↑15m # Los tres números son promedios de procesos en estado "runnable" o # esperando I/O. Para interpretar si la carga es alta, divídela entre # el número de CPUs lógicas que devolvió lscpu.
Lo que hace cada pieza y por qué importa
uname -a es el comando más rápido para saber la versión exacta del kernel. La cadena 6.1.0-21-amd64 te dice que es el kernel 6.1, parcheo número 21 empaquetado por Debian, para arquitectura amd64. Si estás depurando un problema de módulo de kernel o buscando un CVE, ese número lo necesitas exacto.
hostnamectl es la forma correcta de leer y escribir el hostname en un sistema con systemd. Si usas echo nuevo-nombre > /etc/hostname directamente, el cambio no se propaga a systemd-hostnamed hasta el siguiente arranque. hostnamectl set-hostname lo hace inmediatamente. La distinción entre static hostname (lo que está en disco), transient hostname (lo que el kernel tiene en memoria) y pretty hostname (nombre con espacios para interfaces gráficas) la verás en la salida del comando.
source /etc/os-release en lugar de parsear la salida de hostnamectl o lsb_release: /etc/os-release es el estándar definido por freedesktop.org, lo incluyen Debian, Ubuntu, Fedora, Alpine y prácticamente todo sistema moderno. La variable $ID te da debian, ubuntu, fedora, etc., en minúsculas y sin espacios —perfecta para condicionales en scripts.
En la salida de lscpu, la línea más frecuentemente malinterpretada es CPU(s): 8. Eso no son ocho núcleos físicos; son ocho CPUs lógicas. Con hyperthreading (Thread(s) per core: 2), tienes cuatro núcleos físicos que el SO ve como ocho. Para cargas intensivas en cómputo puro, los núcleos físicos son el número relevante; para cargas de I/O o servicios web con muchas conexiones simultáneas, las ocho CPUs lógicas cuentan.
lspci | grep -i ethernet es el primer paso cuando el driver de red no carga: confirmas que el hardware es visible para el bus PCI antes de buscar módulos. Si lspci no muestra la tarjeta, es un problema de hardware o de BIOS, no de driver.
dmidecode -t system requiere root porque accede directamente a las tablas SMBIOS en memoria. En servidores físicos te da el número de serie del chasis, imprescindible para abrir un caso con soporte del fabricante o para cruzar con el inventario. En una instancia EC2 o en un KVM, verás valores del hipervisor —lo cual por sí mismo te confirma que estás en una VM.
El load average de uptime no es porcentaje de CPU; es una cola de procesos. Un valor de 4.00 en una máquina de ocho CPUs lógicas significa que, en promedio, cuatro procesos estaban esperando ser ejecutados —la máquina tiene margen. Ese mismo 4.00 en una máquina de dos CPUs indica saturación. La tendencia entre los tres valores (1, 5 y 15 minutos) es tan importante como el número: si el de 1 minuto es mucho mayor que el de 15, la carga está subiendo ahora mismo.
N° 90