Procesos en Unix/Linux: gestión, señales, monitorización y prioridades

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,35 KB

Procesos en Unix/Linux: conceptos y comandos principales

1. Concepto de proceso

Proceso: representación de la ejecución de un programa y del entorno de ejecución del mismo.

Proceso demonio: proceso que se ejecuta permanentemente en el sistema.

2. Datos de identificación de un proceso

Process ID (PID): número que identifica el proceso.
Parent Process ID (PPID): cada proceso puede iniciar otros procesos (procesos hijos); deben tener el PID del proceso padre, excepto el 0.
Duración y prioridad del proceso: tiempo de ejecución consumido desde la última invocación y su prioridad asociada.
Directorio de trabajo activo: configura el directorio actual del proceso.

3. Comando ps

El comando ps muestra el estado de los procesos en curso que el usuario ha iniciado. A continuación se detallan opciones y comportamientos comunes:

  • -f: muestra información completa (formato extendido).
  • -e: muestra información de todos los procesos en curso.
  • -u: muestra la lista de procesos de uno o varios usuarios (separados por comas).
  • -G: muestra la lista de procesos de uno o varios grupos.
  • -t: muestra la lista de procesos asociados a una o varias terminales.
  • -p: muestra una lista de uno o varios PID determinados.
  • -l: ofrece información técnica (formato largo).

Estilos de agrupación de opciones:

  • Unix98: opciones de un carácter que pueden agruparse y suelen ir precedidas de un guion (-).
  • BSD: opciones de un carácter que pueden agruparse y no van precedidas de guion.

Campos habituales que muestra ps: name, id proceso (PID), TTY, tiempo CPU, prioridad CPU, uso memoria, comando.

4. Campo STAT y tipos de procesos

El campo STAT indica el estado del proceso. Se interpreta por caracteres. Entre los más importantes:

Primer carácter (estado)

  • R: proceso en ejecución.
  • T: proceso parado; podría ser reiniciado.
  • S: proceso dormido (sleep), en ejecución pero sin actividad en este momento.
  • D: proceso dormido en espera de un recurso (estado de espera ininterrumpible).
  • Z: proceso zombi; ha terminado pero sigue existiendo hasta que su padre lo recoja.

Segundo carácter (atributos adicionales)

  • <: alta prioridad (realtime).
  • N: baja prioridad (nice mayor).
  • L: tiene páginas bloqueadas en memoria (locked pages).
  • -s: líder de sesión.
  • -l: multi-threaded.
  • +: pertenece al grupo de procesos de primer plano.

5. Shell y gestión de tareas

Shell: el símbolo & se utiliza para ejecutar procesos en segundo plano.

jobs: muestra la información mínima de los procesos (tareas) que el usuario ha puesto desde la shell.

6. Señales y comandos de terminación

kill: con el PID de un proceso podemos enviar señales para que el proceso se detenga o reaccione.

  • -l: proporciona la lista de las señales que podemos utilizar con su número correspondiente.
  • -s <Nº|nombre>: manda la señal indicada por número o por nombre. Por ejemplo, -s 9 o -s KILL (se puede usar el nombre sin anteponer SIG).

killall: funciona con el nombre del proceso en vez de con el PID, por lo que puede terminar todos los procesos con el nombre indicado.

  • killall -i <nombre>: pide confirmación antes de matar cada proceso.

7. Prioridades de procesos

nice: crea un proceso con la prioridad que se le indique (valor de niceness).
renice: modifica la prioridad de procesos ya existentes, si aún no han terminado y si el permiso lo permite. Para cambiar prioridades de varios grupos o usuarios pueden especificarse más de un ID; en algunos casos solo funciona como root.

Ejemplo de comprobación: ps -al muestra información ampliada, incluido el campo NI (nice) que indica la prioridad que se estableció.

8. Monitorización con top

top muestra procesos ordenados por cuánto tiempo de CPU consumen y se actualiza periódicamente.

  • -d <segundos>: especifica el retardo entre actualizaciones (por defecto suele ser 5 s).
  • -p <PID>: monitoriza procesos específicos.
  • -n <N>: muestra un número concreto de actualizaciones y luego sale.

Teclas y acciones dentro de top:

  • h o ?: muestra ayuda.
  • k: destruye un proceso (pide PID y señal).
  • q: sale del comando top.
  • r: cambia la prioridad de un proceso (renice interactivo).
  • s: cambia la velocidad de actualización del top.
  • P: ordena los datos por uso de CPU.
  • M: ordena los datos por uso de memoria.

9. Comando uptime

uptime: muestra la carga media del sistema junto con el tiempo que lleva el equipo en ejecución.

Notas finales

Los conceptos, flags y estados anteriores son útiles para gestionar y monitorizar procesos en sistemas Unix/Linux. Mantén presente la distinción entre estilos de opciones (Unix98 vs BSD) y usa las herramientas adecuadas según la necesidad (inspección con ps, control con kill/killall, y monitorización en tiempo real con top).

Entradas relacionadas: