Comando ps

Comando ps

El comando ps (process status) es la herramienta estándar en sistemas Unix y Linux para obtener una instantánea de los procesos que se están ejecutando en el sistema operativo en un momento dado. Permite visualizar información detallada como el PID (Process Identifier), el uso de CPU y memoria, el usuario propietario y la orden exacta que lanzó cada proceso.

Categoría Procesos y servicios
Disponible en Linux (procps-ng) / Unix
Equivalente en Windows tasklist (CMD), Get-Process (PowerShell)
Sustituye a Herramientas heredadas de System V o BSD (aunque coexiste con ellas).
¿Requiere permisos de administrador? No para ver los procesos del usuario actual; sí para ver los procesos de otros usuarios o del sistema completo.

¿Qué significa su nombre?

PS son las siglas de Process Status (Estado del Proceso).

Su propósito fundamental es informar sobre los procesos activos en el núcleo (kernel) de Linux en el preciso instante en que se ejecuta la orden.

¿Para qué sirve?

El comando ps sirve para auditar el rendimiento y el estado del sistema operativo a nivel de software. Permite a los administradores localizar procesos colgados, verificar qué usuario está ejecutando una aplicación concreta, conocer el identificador único (PID) de un programa para poder gestionarlo o detenerlo, y analizar los recursos consumidos.

A diferencia de comandos interactivos como top o htop, ps ofrece una fotografía estática (un informe puntual), lo que lo hace ideal para ser combinado con filtros (como grep) en scripts y automatizaciones.

Sintaxis

ps [opciones]

Los estilos de opciones en ps son muy particulares porque acepta sintaxis de Unix, de BSD y parámetros largos GNU:

Estilo / Opción Descripción
-e o -A Muestra todos los procesos del sistema (estilo System V).
-f Formato de lista completa (muestra UID, PPID, hora de inicio, etc.).
aux Muestra todos los procesos de todos los usuarios con formato detallado (estilo BSD).
-u [usuario] Filtra los procesos pertenecientes a un usuario específico.

Comandos más utilizados

Comando Descripción
ps Muestra los procesos asociados a la sesión actual del terminal.
ps aux Muestra todos los procesos de todos los usuarios con detalles de uso.
ps -ef Muestra todos los procesos en formato de lista completa con árbol de jerarquía.
ps -u usuario Muestra únicamente los procesos ejecutados por un usuario concreto.

Equivalencia con otros sistemas

Acción Linux antiguo Linux actual Windows
Listar procesos ps ps aux / ps -ef tasklist
Filtrar proceso por nombre ps | grep ps -C [nombre] tasklist /FI "IMAGENAME eq ..."
Ver procesos en tiempo real top top / htop / btop taskmgr (Administrador de tareas)
Terminar proceso por PID kill kill / pkill taskkill /PID ...

Ejemplos

Mostrar todos los procesos del sistema en formato detallado

ps aux

Mostrar los procesos en formato completo de árbol o lista con jerarquía

ps -ef

Buscar un proceso específico combinándolo con el comando grep

ps aux | grep apache2

Mostrar los procesos de un usuario determinado

ps -u root

Ejemplo de salida

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.4 169324 13420 ?        Ss   09:15   0:01 /sbin/init
root       512  0.0  0.1  45120  4210 ?        S    09:15   0:00 /lib/systemd/systemd-journald
usuario   2415  0.1  1.2 924100 48120 pts/0    Sl   10:30   0:05 /usr/lib/firefox/firefox

¿Cómo interpretar la salida?

  • USER: nombre del usuario propietario que ejecuta el proceso.
  • PID: identificador único numérico del proceso (Process ID).
  • %CPU / %MEM: porcentaje de uso de procesador y memoria RAM respectivamente.
  • VSZ / RSS: memoria virtual y memoria física residente utilizada por el proceso.
  • TTY: terminal asociado al proceso (? indica que corre en segundo plano como demonio).
  • STAT: estado del proceso (ej. S dormido, R ejecutándose, Z zombie).
  • START: hora o fecha en que se inició el proceso.
  • COMMAND: nombre del comando o ruta del ejecutable que dio lugar al proceso.

Errores habituales

  • Olvidar que ps aux sin el guion y ps -ef con guion son convenciones distintas pero válidas (mezclar estilos incorrectamente puede arrojar advertencias).
  • Pensar que ps actualiza los datos en tiempo real de forma continua (para eso deben emplearse herramientas como top o htop).

Conceptos relacionados

  • Proceso
  • PID (Process ID)
  • Demonio (Daemon)
  • Uso de CPU y Memoria
  • Jerarquía de procesos (Padre/Hijo)
  • Señales de control (Signals)

Comandos relacionados

  • top
  • htop
  • kill
  • pkill
  • systemctl
  • grep

Curiosidades

La combinación de argumentos aux es una de las más utilizadas en la historia de Unix, heredada de los sistemas BSD. Aunque técnicamente el guion debería preceder a las opciones (como -aux), en ps se tolera e incluso se recomienda omitirlo para evitar que busque un proceso cuyo PID coincida numéricamente con "aux".


Prácticas propuestas

  1. Ejecuta ps sin argumentos en tu terminal. ¿Qué procesos aparecen listados y a qué se debe que sean tan pocos?
  2. Ejecuta ps aux y localiza el PID correspondiente al intérprete de comandos (shell) que estás utilizando actualmente.
  3. Utiliza una tubería (pipe) combinando ps aux y grep para averiguar si el servidor SSH o algún servicio web está activo en tu sistema.
  4. Compara la cantidad de información obtenida al ejecutar ps frente a ps -ef. ¿Qué campos adicionales se muestran en el segundo caso?
  5. Ejecuta ps -u [tu_nombre_de_usuario] para aislar y revisar exclusivamente los procesos que dependen de tu sesión de usuario.
  6. Si dispones de un entorno Windows, ejecuta tasklist en la línea de comandos y compara los campos de salida con los que proporciona ps aux en Linux.

Consejo: Utiliza ps aux | grep [nombre] siempre que necesites encontrar rápidamente el PID de un programa colgado para poder finalizar su ejecución con el comando kill.