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.
Sdormido,Rejecutándose,Zzombie). - 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 auxsin el guion yps -efcon guion son convenciones distintas pero válidas (mezclar estilos incorrectamente puede arrojar advertencias). - Pensar que
psactualiza los datos en tiempo real de forma continua (para eso deben emplearse herramientas comotopohtop).
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
tophtopkillpkillsystemctlgrep
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
- Ejecuta
pssin argumentos en tu terminal. ¿Qué procesos aparecen listados y a qué se debe que sean tan pocos? - Ejecuta
ps auxy localiza el PID correspondiente al intérprete de comandos (shell) que estás utilizando actualmente. - Utiliza una tubería (pipe) combinando
ps auxygreppara averiguar si el servidor SSH o algún servicio web está activo en tu sistema. - Compara la cantidad de información obtenida al ejecutar
psfrente aps -ef. ¿Qué campos adicionales se muestran en el segundo caso? - Ejecuta
ps -u [tu_nombre_de_usuario]para aislar y revisar exclusivamente los procesos que dependen de tu sesión de usuario. - Si dispones de un entorno Windows, ejecuta
tasklisten la línea de comandos y compara los campos de salida con los que proporcionaps auxen 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.