Procesos y gestión de servicios en Linux

Este módulo explica cómo Linux ejecuta, gestiona y controla procesos y servicios. Como sysadmin, dominar estos conceptos es esencial para diagnosticar problemas, optimizar recursos y mantener servicios críticos en funcionamiento.

Aprenderás a identificar procesos, gestionar prioridades, enviar señales y controlar demonios y servicios del sistema.


Introducción / Concepto principal

Un proceso es un programa en ejecución. Linux es un sistema multitarea y multiusuario, por lo que múltiples procesos se ejecutan de forma simultánea.

Cada proceso tiene:

  • Un identificador único (PID)
  • Un proceso padre (PPID)
  • Un usuario propietario
  • Un estado (ejecutándose, detenido, zombie, etc.)

Todo en Linux se ejecuta como proceso, directa o indirectamente.


Visualización y estados de procesos

Comandos básicos

ps aux
  • a → todos los usuarios
  • u → formato detallado
  • x → procesos sin terminal
top
  • Vista dinámica de procesos
  • Uso de CPU y memoria
  • Ordenación por consumo
htop
  • Versión mejorada (si está instalada)
  • Navegación interactiva y señales

Estados de procesos

Estado Significado
R Ejecutándose
S Interrumpible (sleep)
D No interrumpible
T Detenido
Z Zombie

Los procesos zombie indican problemas de gestión por parte del padre.


Señales y control de procesos

Linux controla procesos mediante señales.

Señales comunes

Señal Número Uso
SIGTERM 15 Finalización ordenada
SIGKILL 9 Muerte inmediata
SIGSTOP 19 Pausa
SIGCONT 18 Reanudar

Enviar señales

kill PID
kill -9 PID
pkill nombre_proceso
killall nombre_proceso

⚠️ Usa -9 solo como último recurso: no permite limpieza ni cierre ordenado.


Prioridades y recursos

Cada proceso tiene una prioridad de ejecución.

Nice y renice

  • Rango: -20 (más prioridad) a 19 (menos prioridad)
nice -n 10 comando
renice -5 -p PID
  • Solo root puede asignar prioridades negativas

Ajustar prioridades ayuda a proteger servicios críticos en sistemas cargados.


Arquitectura de procesos

Jerarquía de procesos

  • PID 1 → systemd
  • Todos los procesos tienen un padre
  • Si el padre muere:
    • El proceso es adoptado por PID 1
pstree -p

Demonios

  • Procesos que corren en segundo plano
  • No dependen de terminal
  • Ejemplos: sshd, cron, nginx

Gestión de servicios con systemd

Conceptos clave

  • Unidad: archivo que define el servicio
  • Ubicación: /etc/systemd/system/ o /usr/lib/systemd/system/

Comandos fundamentales

systemctl status ssh
systemctl start ssh
systemctl stop ssh
systemctl restart ssh
systemctl enable ssh   # Arranque automático
systemctl disable ssh

Logs con journalctl

journalctl -u ssh
journalctl -xe

systemd centraliza procesos, servicios y logs en un único sistema coherente.


Puntos críticos / Errores comunes

  • Matar procesos críticos (systemd, sshd)
  • Uso excesivo de kill -9
  • No revisar consumo de recursos antes de actuar
  • No habilitar servicios necesarios tras reinicio
  • Ignorar procesos zombie o huérfanos

Consejo: observa primero, actúa después


Ejercicios prácticos

1. Identificar procesos con mayor uso de CPU

top

2. Lanzar un proceso con baja prioridad

nice -n 15 sleep 300 &

3. Detener y reanudar un proceso

kill -STOP PID
kill -CONT PID

4. Reiniciar un servicio y verificar logs

systemctl restart ssh
journalctl -u ssh -n 20

Mentalidad

  • Nunca mates procesos sin saber qué hacen
  • Prioriza estabilidad sobre rapidez
  • Los logs son tu mejor aliado
  • systemd es tu centro de control
  • Automatiza pero verifica

Resumen

  • Los procesos son programas en ejecución
  • ps, top, htop permiten analizarlos
  • Las señales controlan su comportamiento
  • nice y renice ajustan prioridades
  • systemd gestiona servicios y demonios
  • Una mala gestión de procesos puede tumbar sistemas enteros

Siguiente paso

En el siguiente módulo aprenderás sobre:

Paquetes y repositorios del sistema (paquetes.md)

Donde verás:

  • Paquetes basados en distros
  • Gestión de paquetes
  • Dependencias
  • Repositorios