Un administrador de sistemas debe ser capaz de evaluar el estado de los procesos y los recursos del sistema en tiempo real o a través de históricos.
14.1. Introducción
La monitorización permite detectar cuellos de botella de CPU, memoria, entrada/salida y red, así como identificar procesos que consumen en exceso o se han bloqueado.
En este capítulo, aprenderás las herramientas fundamentales: desde las clásicas ps, top y free, hasta soluciones más detalladas como pidstat, vmstat, iostat, sar y el sistema de archivos /proc. Todas ellas forman parte del repertorio que LFCS espera que manejes.
14.2. Listado de procesos con ps
El comando ps (process status) proporciona una instantánea de los procesos actuales. Su sintaxis admite opciones con y sin guiones (estilo BSD, Unix y GNU). Las más útiles son:
ps aux– muestra todos los procesos del sistema con formato BSD detallado.ps -ef– estilo Unix, similar pero con distinta presentación.ps -e --forest– muestra la jerarquía de procesos en árbol.
14.2.1. Columnas clave
| Columna | Significado |
|---|---|
| USER | Propietario del proceso |
| PID | ID del proceso |
| %CPU | Porcentaje de CPU utilizado (respecto al tiempo total de CPU desde que se inició) |
| %MEM | Porcentaje de memoria física utilizada |
| VSZ | Tamaño de memoria virtual (en KiB) |
| RSS | Tamaño de memoria residente (memoria física real, sin swap) |
| TTY | Terminal asociada (? para ninguno) |
| STAT | Estado: R (running), S (sleeping), D (uninterruptible sleep), Z (zombie), T (stopped) |
| START | Hora de inicio |
| TIME | Tiempo total de CPU consumido |
| COMMAND | Línea de comandos (puede truncarse; con ps auxww se muestra completa) |
Ejemplos prácticos:
ps aux | grep nginx
ps -eo pid,user,%cpu,%mem,comm --sort=-%mem | head
ps -ef --forest # ver árbol de procesos
Opciones de formato personalizado con -o permiten seleccionar exactamente las columnas deseadas, muy útil para scripts.
14.3. Monitorización interactiva con top
El comando top proporciona una vista en tiempo real de los procesos y los recursos del sistema. Se ejecuta en la terminal y se actualiza cada 3 segundos por defecto.
14.3.1. Áreas de la pantalla
Parte superior (resumen del sistema):
top -hora, uptime, número de usuarios y carga media (load average) de 1, 5 y 15 minutos.Tasks:procesos totales, en ejecución, durmiendo, detenidos, zombies.%Cpu(s):desglose de uso de CPU (usuario, sistema, nice, idle, iowait, etc.).MiB Mem:memoria total, libre, usada, buffers/caché.MiB Swap:uso de swap.
Lista de procesos (ordenados por %CPU por defecto).
14.3.2. Comandos interactivos
| Tecla | Acción |
|---|---|
h | Ayuda |
k | Matar un proceso (pide PID y señal) |
r | Cambiar prioridad (renice) |
f | Elegir columnas mostradas |
o | Cambiar orden (por CPU, memoria, PID, etc.) |
c | Mostrar línea de comandos completa |
V | Vista en árbol |
M | Ordenar por memoria |
P | Ordenar por CPU |
T | Ordenar por tiempo de ejecución |
1 | Expandir/colapsar CPUs individuales |
E | Cambiar unidades de memoria (MiB, GiB, etc.) |
Para salir: q.
Se puede ejecutar top en modo batch para capturas rápidas:
top -b -n 1
14.3.3. htop – alternativa mejorada
htop ofrece una interfaz más visual, con colores, uso de ratón y navegación por teclado intuitiva. Se instala con apt install htop / yum install htop. Permite matar procesos con F9, renice con F7/F8, y ver árboles con F5. Aunque no siempre está disponible en el examen, es bueno conocerlo para el día a día.
14.4. Estadísticas por proceso con pidstat
Parte del paquete sysstat, pidstat muestra actividad de CPU, memoria, E/S y más por proceso. Muy útil para análisis históricos y detección de consumo excesivo.
Uso de CPU por proceso cada 1 segundo:
pidstat 1
Incluir estadísticas de memoria (-r), E/S (-d) y fallos de página (-u):
pidstat -r 2 5 # cada 2 seg, 5 muestras
pidstat -d # actividad de disco
Ver todos los procesos, incluidos los que no tienen actividad reciente:
pidstat -p ALL
Columnas útiles:
%usr,%system,%guest,%CPU(porcentaje de CPU)minflt/s,majflt/s(fallos de página menores y mayores)VSZ,RSS(memoria)kB_rd/s,kB_wr/s,kB_ccwr/s(lectura/escritura disco)
14.5. Estadísticas globales del sistema
14.5.1. vmstat – memoria y procesos
El comando vmstat informa sobre procesos, memoria, paginación, bloques de E/S, interrupciones y cambios de contexto.
vmstat 2 5 # cada 2 seg, 5 informes
Columnas: r (procesos en cola de ejecución), b (bloqueados), swpd (swap usado), free, buff, cache, si/so (swap in/out), bi/bo (bloques leídos/escritos en disco), us/sy/id/wa (porcentajes de CPU: usuario, sistema, idle, iowait).
Si wa es persistentemente alto, indica cuello de botella de E/S.
14.5.2. iostat – uso de disco y CPU
También del paquete sysstat, muestra la carga de E/S de los dispositivos de almacenamiento.
iostat -x 2 3 # estadísticas extendidas cada 2 segundos
Campos clave: await (tiempo medio de espera), svctm, %util (porcentaje de utilización del disco), r/s, w/s (operaciones de lectura/escritura por segundo), rkB/s, wkB/s.
Una utilización cercana al 100% con tiempos altos indica saturación del almacenamiento.
14.5.3. mpstat – uso de CPU por núcleo
Muestra la actividad de cada CPU por separado.
mpstat -P ALL 1
Ideal para detectar desequilibrios o ver si un proceso usa un solo núcleo.
14.5.4. sar – colector de datos históricos
sar puede recopilar y mostrar datos en tiempo real o del pasado (si el servicio sysstat está activo). Sintaxis común:
- Uso de CPU:
sar -u 1 3 - Memoria:
sar -r - Swap:
sar -S - E/S de disco:
sar -bosar -d - Red:
sar -n DEV(tráfico por interfaz)
Por ejemplo, para ver el tráfico de red en tiempo real:
sar -n DEV 1
Para datos históricos (del día actual por defecto): sar -u -f /var/log/sa/saXX (donde XX es el día del mes).
sar es muy potente, pero para el examen LFCS basta con conocer su sintaxis básica y saber que los datos históricos se guardan en /var/log/sa/.
14.5.5. free – memoria y swap
free -h # humano: MiB/GiB
free -m # en MiB
Muestra memoria total, usada, libre, compartida, buffers/caché y disponible. La columna available es la más fiable para saber cuánta memoria hay realmente para nuevos procesos (incluye caché que se puede liberar).
14.5.6. uptime – carga del sistema
uptime
Proporciona la hora actual, tiempo de actividad y la carga media de 1, 5 y 15 minutos. Una carga superior al número de CPUs lógicas indica sobrecarga.
14.6. El sistema de archivos /proc
/proc es un sistema de archivos virtual que expone información del kernel y los procesos. Para monitorización destacan:
/proc/cpuinfo– información de CPUs./proc/meminfo– detalles de memoria (más completo quefree)./proc/loadavg– carga media y procesos en ejecución./proc/uptime– segundos desde el arranque y tiempo idle./proc/stat– estadísticas del sistema (CPU, interrupciones, arranque)./proc/<PID>/status– estado detallado de un proceso./proc/<PID>/stat– estadísticas en formato máquina (usado porps)./proc/<PID>/io– E/S del proceso./proc/<PID>/fd/– enlaces a los archivos abiertos por el proceso.
Ejemplo para obtener la memoria usada por un proceso:
grep VmRSS /proc/1234/status
Es útil para scripting, aunque en LFCS basta con saber que existe y poder extraer datos puntuales.
14.7. Herramientas para buscar procesos
14.7.1. pgrep – buscar por nombre
pgrep -l nginx
pgrep -u www-data
pgrep -x sshd # coincidencia exacta
14.7.2. pidof – PID de un programa
pidof sshd
pidof -s nginx # un solo PID
14.7.3. pkill – matar procesos por nombre
pkill -HUP nginx
pkill -9 -u juan # terminar todos los procesos del usuario juan
(Se debe usar con precaución)
14.8. Monitorización de red
Aunque la monitorización de red se trata en profundidad en el capítulo 29, un vistazo rápido aquí:
ss -tulnp: sockets escuchando o establecidos (reemplazo denetstat).iftop: tráfico en tiempo real por interfaz (requiere instalación).nethogs: tráfico por proceso (también externo).
Dentro del alcance de este capítulo, sar -n DEV o ip -s link son útiles.
14.9. Ejercicios prácticos
Análisis con
ps: Lista todos los procesos que consumen más del 5% de memoria. Muestra PID, usuario, %MEM y comando completo. Y encuentra todos los procesos en estado zombie (Z). ¿Qué significan y cómo se eliminan?topinteractivo: Ordena por memoria (M), identifica el que más consume y cambia su prioridad (renice) conra 10 (menos prioridad). Y muestra solo los procesos de un usuario concreto (pista:uentop).pidstat: Monitoriza la actividad de E/S de un proceso específico (si existenginxo similar). Usapidstat -d -p PID 1 5. Vigila los fallos de página de un proceso; un altomajflt/spuede indicar escasez de memoria.Estadísticas del sistema: Ejecuta
vmstat 2 5durante una transferencia de archivos grandes (usadd). Interpreta las columnasbi,boywa. Coniostat -x 1mientras ejecutasstress --io 2(si instalasstress), observa cómo sube%util. Y utilizafree -hantes y después de iniciar un programa que consuma mucha memoria./proc: Encuentra el PID desshdy examina/proc/<PID>/status. ExtraeVmSize,VmRSSyThreads. Y mira los archivos abiertos por ese proceso conls -l /proc/<PID>/fd.Búsqueda y señales: Usa
pgreppara localizar procesos decrony envía la señal SIGHUP acronconpkill -HUP cronpara que relea su configuración.
14.10. Resumen y consejos para LFCS
ps auxytopson los comandos básicos que debes manejar a la perfección.- Aprende a interpretar la carga media del sistema (
uptime) y los estados de los procesos (D, Z, S). pidstatyvmstat/iostatson herramientas muy valoradas en el examen; practica su salida e interpretación.- No necesitas memorizar todas las columnas, pero sí saber cómo encontrar rápidamente un alto consumo de CPU, memoria o E/S.
- Recuerda que
/procestá siempre disponible; puedes consultar sus archivos sin instalar nada adicional. - La capacidad de localizar y terminar procesos problemáticos de forma segura (
pgrep,pkill, señales adecuadas) es una habilidad transversal que también aparece en otros temas.
Con estas herramientas puedes diagnosticar y mantener el rendimiento del sistema. En el próximo capítulo exploraremos cómo establecer parámetros del kernel en tiempo de ejecución (sysctl), otro pilar de la administración avanzada de Linux.
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.
