El comando ps (process status) es una utilidad nativa de sistemas Unix y Linux que permite ver información sobre los procesos que se están ejecutando en el sistema.
Esta herramienta obtiene la información directamente del sistema de archivos virtual /proc, donde el sistema operativo expone datos internos sobre procesos, memoria y estado del sistema.
¿Cómo usar el Comando PS?
El comando ps es fundamental para los administradores de sistemas, ya que permite monitorizar procesos, analizar consumo de recursos y diagnosticar problemas en el sistema.
Aunque dispone de muchas opciones, en la práctica solo unas pocas se utilizan en el día a día. En este tutorial aprenderás 30 ejemplos útiles del comando ps para monitorizar procesos en Linux.
Nota: El comando ps siempre muestra una fila de encabezados que explica el significado de cada columna; puedes consultar todas las etiquetas en el manual usando man ps.
1. ¿Cómo mostrar procesos de la terminal actual?
Si ejecutas ps sin argumentos, se mostrarán únicamente los procesos asociados a la shell actual.
ps
Esto permite ver qué procesos se están ejecutando en la terminal desde la que se lanzó el comando.
2. ¿Cómo listar todos los procesos en formato estándar?
Para mostrar todos los procesos activos del sistema, usa:
ps -A
o
ps -e
Esto mostrará todos los procesos en formato estándar de Unix/Linux.
3. ¿Cómo mostrar los procesos en formato BSD?
También puedes visualizar los procesos utilizando el formato BSD.
ps au
o
ps axu
Este formato suele incluir información más detallada sobre usuarios y recursos.
4. ¿Cómo mostrar procesos en formato completo?
Si necesitas una lista más completa con más columnas de información, usa:
ps -ef
o
ps -eF
Este formato muestra más datos como el PID padre, uso de CPU y parámetros del proceso.
5. ¿Cómo ver todos los procesos del usuario actual?
Para listar los procesos que pertenecen al usuario que ejecuta el comando:
ps -x
Esto es útil para revisar qué procesos están ejecutándose bajo tu sesión.
6. ¿Cómo mostrar procesos por ID de usuario real? (RUID)
Puedes listar los procesos de un usuario específico usando su ID real o nombre.
ps -fU cibered
o
ps -fu 1000
Esto mostrará los procesos del usuario cibered.
7. ¿Cómo mostrar procesos por ID de usuario efectivo? (EUID)
También puedes filtrar procesos usando el ID de usuario efectivo.
ps -fu cibered
o
ps -fu 1000
8. ¿Cómo mostrar procesos ejecutados con privilegios root?
Para listar todos los procesos que se ejecutan con permisos de root:
ps -U root -u root
Esto muestra procesos cuyo ID real o efectivo pertenece a root.
9. ¿Cómo listar procesos de un grupo específico?
Puedes mostrar todos los procesos pertenecientes a un grupo:
ps -fG apache
o
ps -fG 48
10. ¿Cómo mostrar procesos por grupo efectivo?
También es posible listar procesos por grupo efectivo o sesión.
ps -fg apache
11. ¿Cómo buscar un proceso por PID?
Si conoces el PID (Process ID) de un proceso, puedes mostrar su información con:
ps -fp 1178
12. ¿Cómo buscar procesos hijo por PPID?
El PPID es el identificador del proceso padre. Para buscar procesos hijos de un proceso concreto:
ps -f --ppid 1154
13. ¿Cómo mostrar varios procesos por lista de PID?
También puedes consultar múltiples procesos a la vez.
ps -fp 2226,1154,1146
14. ¿Cómo filtrar procesos por terminal?
Para mostrar procesos que se ejecutan en una terminal específica:
ps -t pts/0
ps -t pts/1
ps -ft tty1
Esto es útil para identificar procesos asociados a una sesión concreta.
15. ¿Cómo mostrar el árbol completo de procesos?
Un árbol de procesos muestra cómo se relacionan los procesos entre sí.
ps -e --forest
En Linux, si un proceso padre desaparece, el proceso init o systemd adopta los procesos hijos.
16. ¿Cómo mostrar el árbol de un proceso específico?
También puedes visualizar el árbol de un servicio concreto.
ps -f --forest -C sshd
o
ps -ef --forest | grep -v grep | grep sshd
Esto permite analizar cómo se generan los procesos relacionados con un servicio.
17. ¿Cómo ver los hilos de un proceso?
Para listar los threads (hilos) de un proceso:
ps -fL -C httpd
Este comando muestra columnas como:
- LWP (lightweight process)
- NLWP (número total de hilos)
18. ¿Cómo ver todos los formatos disponibles?
Para listar todos los campos que puedes mostrar:
ps L
19. ¿Cómo crear un formato de salida personalizado?
Puedes definir exactamente qué columnas quieres ver.
ps -eo pid,ppid,user,cmd
Esto mostrará:
- PID
- PID padre
- usuario
- comando ejecutado
20. ¿Cómo mostrar más información de un proceso?
También puedes mostrar datos adicionales como:
- grupo de sistema de archivos
- prioridad
- hora de inicio
- tiempo de ejecución
ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
21. ¿Cómo encontrar el nombre de un proceso por su PID?
ps -p 1154 -o comm=
Esto devuelve únicamente el nombre del proceso.
22. ¿Cómo buscar procesos por nombre?
Para mostrar un proceso junto con sus procesos hijos:
ps -C sshd
23. ¿Cómo obtener todos los PID de un proceso?
Esto es útil en scripts.
ps -C httpd -o pid=
El comando devuelve todos los PID de las instancias activas.
24. ¿Cómo ver el tiempo de ejecución de un proceso?
Puedes comprobar cuánto tiempo lleva ejecutándose un proceso:
ps -eo comm,etime,user | grep httpd
Esto mostrará el tiempo total de ejecución.
25. ¿Cómo encontrar los procesos que consumen más recursos?
Puedes listar los procesos que más CPU o memoria consumen.
Por memoria:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Por CPU:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
Esto es muy útil cuando el sistema está lento o saturado.
26. ¿Cómo terminar o matar los procesos más problemáticos?
Si encuentras un proceso que consume demasiados recursos:
Primero identifica su PID:
ps -A | grep -i stress
Después finalízalo:
kill -9 2583 2584
Este comando envía una señal para terminar el proceso inmediatamente.
27. ¿Cómo ver el contexto de seguridad? (SELinux)
En sistemas con SELinux puedes mostrar el contexto de seguridad:
ps -eM
o
ps --context
28. ¿Cómo mostrar la información de seguridad personalizada?
También puedes incluir información de seguridad en un formato personalizado:
ps -eo euser,ruser,suser,fuser,f,comm,label
Esto muestra datos de contexto de seguridad junto con el proceso.
29. ¿Cómo monitorizar los procesos en tiempo real?
El comando ps muestra información estática, es decir, una instantánea del sistema en ese momento.
Para monitorizar procesos continuamente puedes usar watch (Unix command).
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Este comando:
- ejecuta ps cada segundo
- muestra los procesos que más memoria consumen
- actualiza automáticamente la salida
Herramientas alternativas para monitorizar procesos
Aunque ps es extremadamente útil, existen herramientas que muestran datos en tiempo real.
Entre las más populares están:
- htop
- top (Unix command)
- Glances
Estas herramientas ofrecen una visión más dinámica del rendimiento del sistema.
Conclusión
El comando ps es una herramienta esencial para analizar procesos en sistemas Linux. Permite obtener información detallada sobre procesos, usuarios, consumo de recursos y jerarquía de ejecución.
Dominar sus opciones te ayudará a diagnosticar problemas de rendimiento, gestionar procesos y comprender mejor lo que ocurre dentro de tu sistema Linux.
