Saltar al contenido principal

Lab 2.1 - Inspección del Kernel y Procesos del Sistema

Objetivos​

Al final de este laboratorio, usted será capaz de:

  • Inspeccionar el kernel de Linux
  • Verificar los procesos del sistema
  • Examinar systemd y los servicios
  • Comprender la estructura de los procesos

Requisitos previos​

  • Sistema Linux funcional (se recomienda Ubuntu/Debian)
  • Acceso root o sudo
  • Terminal abierto

Ejercicio 1: Información sobre el Kernel​

Paso 1: Versión del Kernel​

# Ver la versión del kernel
uname -a

# Solo la versión
uname -r

# Información detallada
cat /proc/version

Pregunta: ¿Qué versión de kernel está utilizando?

Paso 2: Módulos del Kernel​

# Ver los módulos cargados
lsmod

# Ver los detalles de un módulo
modinfo nombre-módulo

# Ver los módulos relacionados con una palabra clave
lsmod | grep network

Paso 3: Parámetros del Kernel​

# Ver los parámetros sysctl
sysctl -a

# Ver un parámetro específico
sysctl kernel.version

# Ver los parámetros de red
sysctl net.ipv4

Ejercicio 2: Procesos del Sistema​

Paso 1: Proceso Init (PID 1)​

# Ver el proceso init
ps -p 1

# Detalles del proceso
ps -p 1 -o pid,ppid,cmd,etime

# Ver el tipo de init
systemctl --version

Pregunta: ¿Qué sistema de init está utilizando? (systemd, SysVinit, etc.)

Paso 2: Procesos del Sistema​

# Ver todos los procesos
ps aux

# Ver el árbol de procesos
pstree

# Con PID
pstree -p

# Ver solo los procesos del sistema
ps aux | grep -E '\[.*\]'

Paso 3: Procesos por Usuario​

# Procesos de root
ps -u root

# Procesos de su usuario
ps -u $USER

# Contar los procesos
ps aux | wc -l

Ejercicio 3: systemd y Servicios​

Paso 1: Estado de systemd​

# Ver la versión de systemd
systemctl --version

# Ver el estado de systemd
systemctl status

# Ver las unidades activas
systemctl list-units --type=service --state=running

Paso 2: Servicios del Sistema​

# Ver todos los servicios
systemctl list-units --type=service

# Servicios activos
systemctl list-units --type=service --state=active

# Servicios fallidos
systemctl list-units --type=service --state=failed

Paso 3: Detalles de un Servicio​

# Estado de un servicio (ej: sshd)
systemctl status sshd

# Ver los logs
journalctl -u sshd

# Últimas líneas
journalctl -u sshd -n 50

Ejercicio 4: Exploración de /proc​

Paso 1: Información del Sistema​

# Información de la CPU
cat /proc/cpuinfo

# Información de la memoria
cat /proc/meminfo

# Información del sistema
cat /proc/loadavg

Paso 2: Procesos en /proc​

# Ver los procesos
ls /proc/ | grep -E '^[0-9]+$'

# Información sobre un proceso (reemplazar PID)
cat /proc/1/status

# Archivos abiertos por un proceso
ls -l /proc/1/fd/

Paso 3: Información de Red​

# Conexiones de red
cat /proc/net/sockstat

# Estadísticas de red
cat /proc/net/dev

Ejercicio 5: Análisis Avanzado​

Paso 1: Uso de Recursos​

# Procesos principales
top -bn1 | head -20

# Con htop (si está instalado)
htop

# Uso de CPU por proceso
ps aux --sort=-%cpu | head -10

# Uso de memoria por proceso
ps aux --sort=-%mem | head -10

Paso 2: Árbol de Procesos​

# Árbol completo
pstree -a

# Con usuarios
pstree -u

# Limitar la profundidad
pstree -L 2

Paso 3: Procesos Zombie​

# Ver los procesos zombie
ps aux | grep -w Z

# Contar los zombies
ps aux | grep -w Z | wc -l

Ejercicio 6: Monitoreo en Tiempo Real​

Paso 1: top​

# Iniciar top
top

# Comandos en top:
# - 'q': Salir
# - 'k': Matar un proceso
# - 'r': Cambiar prioridad (renice) de un proceso
# - 'f': Cambiar las columnas mostradas

Paso 2: htop (si está disponible)​

# Instalar htop
sudo apt install htop

# Iniciar
htop

# Más interactivo que top

Paso 3: Script de Monitoreo​

# Crear un script simple
cat > monitor.sh << 'EOF'
#!/bin/bash
echo "=== Kernel ==="
uname -a
echo
echo "=== Load Average ==="
uptime
echo
echo "=== Top 5 CPU ==="
ps aux --sort=-%cpu | head -6
echo
echo "=== Top 5 Memory ==="
ps aux --sort=-%mem | head -6
EOF

chmod +x monitor.sh
./monitor.sh

Verificación​

Lista de verificación​

Verifique que usted puede:

  • Ver la versión del kernel
  • Listar los módulos cargados
  • Identificar el proceso init (PID 1)
  • Ver los procesos del sistema
  • Usar systemctl para ver los servicios
  • Explorar /proc para información del sistema
  • Usar top/htop para el monitoreo

Preguntas de Reflexión​

  1. ¿Cuál es el rol del proceso PID 1?

    • Es el padre de todos los procesos
    • Gestiona los procesos huérfanos
    • Inicializa el sistema
  2. ¿Cuál es la diferencia entre ps y top?

    • ps muestra una instantánea
    • top muestra en tiempo real
  3. ¿Por qué es importante /proc?

    • Interfaz hacia el kernel
    • Información en tiempo real
    • No son archivos reales, todo es virtual

Próximos Pasos​

  • Lab 2.2: Análisis de la Gestión de Memoria
  • Lab 2.3: Monitoreo Avanzado del Sistema
  • Capítulo 2.3: Gestión de Memoria y Swap

Lab creado el: diciembre 2024