Skip to content

Gestion De Procesos


  • Proceso: Programa en ejecución administrado por el kernel.
  • PID (Process ID): Identificador único asignado por el sistema a cada proceso.
  • PPID (Parent PID): Identificador del proceso padre (quien lo creó).
  • Estado: Indica el estado actual del proceso:
    • R → ejecutándose (Running)
    • S → durmiendo (Sleeping)
    • T → detenido (Stopped)
    • Z → zombi (Zombie)
  • Señales: Mensajes que el kernel o el usuario pueden enviar a un proceso (ej: SIGKILL, SIGSTOP, SIGINT).

  • ps: Lista los procesos activos.

    Terminal window
    ps aux # Para monitorear recursos ps -ef # Para ver jerarquía y relaciones entre los procesos
  • top / htop: Monitor interactivo de procesos. htop es más visual, permite matar o renicear procesos fácilmente.

  • pgrep: Busca procesos por nombre.

    Terminal window
    pgrep firefox
  • pstree: Muestra los procesos en forma jerárquica (padre-hijo).

    Terminal window
    pstree -p # incluye los PIDs
  • pidof: Muestra el PID de un programa activo.

    Terminal window
    pidof bash

  • Primer plano (foreground):

    Terminal window
    ./programa

El terminal queda ocupado hasta que el proceso termine.

  • Segundo plano (background):

    Terminal window
    ./programa &

El shell sigue disponible mientras el proceso corre. Tener en cuenta que normalmente al cerrar la shell el proceso se termina, pero se puede utilizar el comando disown en la shell para que el proceso no dependa de la shell.

  • Ejemplo práctico:

    Terminal window
    long_task.sh & echo "Sigo usando la terminal"

Bash permite gestionar procesos iniciados desde la misma sesión (misma terminal en el que se ejecutó el proceso).

Terminal window
jobs # lista los procesos de fondo en la sesión actual
fg %1 # lleva el job 1 al primer plano
bg %2 # reanuda el job 2 en segundo plano
# Ctrl+Z pausa el proceso actual

Ejemplo: Creamos un proceso en la terminal:

Terminal window
sleep 1d && echo "Ya paso 1 dia"

Luego das Ctrl+Z y se pausa el proceso (importante no equivocarse con Ctrl+C porque este terminaría el proceso en vez de pausarlo). Cuando escribas:

Terminal window
jobs

Podrás visualizar el proceso, todo se vería algo así:

Salida de jobs en la terminal

Con el comando fg %1 o bg %1 puedes despausar el proceso, con las implicaciones que se dieron arriba.


  • Enviar señales manualmente:

    Terminal window
    kill -9 1234 # SIGKILL (fuerza el cierre)
    kill -15 1234 # SIGTERM (solicita terminación limpia)
    kill -STOP 1234 # pausa proceso
    kill -CONT 1234 # reanuda proceso detenido
  • Por nombre:

    Terminal window
    pkill firefox
    killall nano

Algunos nombres comunes:

ConceptoSignificado
SIGTERM (15)Pedir cierre limpio (por defecto de kill).
SIGKILL (9)Forzar terminación; no se puede atrapar.
SIGINT (2)Interrumpir (Ctrl+C).
SIGSTOPPausar el proceso (no atrapable).
SIGCONTReanudar tras STOP/Ctrl+Z.
SIGHUP (1)“Hang up”; muchos daemons recargan config.
SIGQUIT (3)Salir + core dump (Ctrl+).

Cada proceso tiene un “valor bueno”, que define su prioridad de CPU.

  • Rango: -20 (mayor prioridad) a 19 (menor prioridad).
  • Valor por defecto: 0.
  • Solo root puede asignar valores negativos.
Terminal window
nice -n 10 ./programa
Terminal window
renice -n 5 -p 1234
Terminal window
ps -eo pid,ni,comm

  • Huérfano: cuando el proceso padre termina antes que su hijo. El proceso hijo pasa a ser adoptado por el init o systemd. No es dañino, pero indica una gestión no controlada de procesos.

  • Zombi: proceso que terminó, pero su entrada en la tabla de procesos aún existe porque su padre no leyó su estado de salida (wait() no fue llamado). Se muestran con estado Z.

    Terminal window
    ps aux | grep 'Z'

Para eliminarlos, normalmente basta con terminar el proceso padre.


ComandoQué haceEjemplo
ps auxLista procesos con usuario y recursos.ps aux | grep nginx
top / htopMonitor interactivo.htop
jobs / fg / bgControl de jobs de la sesión.fg %1
kill / pkillEnvía señales a procesos.kill -9 1234
nice / reniceAjusta prioridad (nice).nice -n 10 ./job
pstree / pidofÁrbol o PID por nombre.pidof sshd