ps (estado de procesos) es una utilidad nativa de Unix/Linux para ver información sobre una selección de procesos en ejecución en un sistema: lee esta información de archivos virtuales en el sistema de archivos /proc. Es una de las utilidades importantes para la administración del sistema, específicamente para la monitorización de procesos, para ayudarte a entender qué está sucediendo en un sistema Linux.
Tiene numerosas opciones para manipular su salida, sin embargo, encontrarás un pequeño número de ellas prácticamente útiles para el uso diario.
Leer También: Todo lo que Necesitas Saber sobre Procesos en Linux [Guía Integral]
En este artículo, veremos 30 ejemplos útiles de comandos ps para monitorear procesos en ejecución activos en un sistema Linux.
Ten en cuenta que ps produce una salida con una línea de encabezado, que representa el significado de cada columna de información, puedes encontrar el significado de todas las etiquetas en la página del manual de ps.
Listar Todos los Procesos en la Shell Actual
1. Si ejecutas el comando ps sin argumentos, muestra los procesos para la shell actual.
$ ps

Mostrar Todos los Procesos en Diferentes Formatos
2. Muestra todos los procesos activos en un sistema Linux en formato genérico (Unix/Linux).
$ ps -A OR $ ps -e

3. Muestra todos los procesos en formato BSD.
$ ps au OR $ ps axu

4. Para realizar una lista de formato completo, añade la bandera -f
o -F
.
$ ps -ef OR $ ps -eF

Mostrar Procesos en Ejecución del Usuario
5. Puedes seleccionar todos los procesos propiedad tuya (ejecutor del comando ps, en este caso root), escribe:
$ ps -x
6. Para mostrar los procesos de un usuario por ID de usuario real (RUID) o nombre, utiliza la bandera -U
.
$ ps -fU tecmint OR $ ps -fu 1000

7. Para seleccionar los procesos de un usuario por ID de usuario efectivo (EUID) o nombre, usa la opción -u
.Imprimir Todos los Procesos en Ejecución como Root (ID Real y Efectivo)
$ ps -fu tecmint OR $ ps -fu 1000
8. El comando a continuación te permite ver cada proceso en ejecución con privilegios de usuario root (ID real y efectivo) en formato de usuario.
$ ps -U root -u root

Mostrar Procesos de Grupo
9. Si deseas listar todos los procesos propiedad de un grupo específico (ID de grupo real (RGID) o nombre), escribe.
$ ps -fG apache OR $ ps -fG 48

10. Para listar todos los procesos propiedad del nombre de grupo efectivo (o sesión), escribe.
$ ps -fg apache
Mostrar Procesos por PID y PPID
11. Puedes listar procesos por PID de la siguiente manera.
$ ps -fp 1178

12. Para seleccionar procesos por PPID, escribe.
$ ps -f --ppid 1154

13. Realiza una selección utilizando una lista de PID.
$ ps -fp 2226,1154,1146

Mostrar Procesos por TTY
14. Para seleccionar procesos por tty, utiliza la bandera -t de la siguiente manera.
$ ps -t pts/0 $ ps -t pts/1 $ ps -ft tty1

Imprimir Árbol de Procesos
15. Un árbol de procesos muestra cómo los procesos en el sistema están vinculados entre sí; los procesos cuyos padres han sido eliminados son adoptados por el init (o systemd).
$ ps -e --forest

16. También puedes imprimir un árbol de procesos para un proceso dado de esta manera.
$ ps -f --forest -C sshd OR $ ps -ef --forest | grep -v grep | grep sshd

Imprimir Hilos de Procesos
17. Para imprimir todos los hilos de un proceso, utiliza la bandera -L
, esto mostrará las columnas LWP (proceso ligero) así como NLWP (número de procesos ligeros).
$ ps -fL -C httpd

Especificar Formato de Salida Personalizado
Usando las opciones -o o –format, ps te permite construir formatos de salida personalizados como se muestra a continuación.
18. Para listar todos los especificadores de formato, incluye la bandera L
.
$ ps L
19. El comando a continuación te permite ver el PID, PPID, nombre de usuario y comando de un proceso.
$ ps -eo pid,ppid,user,cmd

20. A continuación se muestra otro ejemplo de un formato de salida personalizado que muestra el grupo del sistema de archivos, el valor nice, la hora de inicio y el tiempo transcurrido de un proceso.
$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

21. Para encontrar un nombre de proceso usando su PID.
$ ps -p 1154 -o comm=

Mostrar Procesos Padres e Hijos
22. Para seleccionar un proceso específico por su nombre, utiliza la bandera -C, esto también mostrará todos sus procesos hijos.
$ ps -C sshd

23. Encuentra todos los PIDs de todas las instancias de un proceso, útil al escribir scripts que necesitan leer PIDs desde una salida estándar o archivo.
$ ps -C httpd -o pid=

24. Verifica el tiempo de ejecución de un proceso.
$ ps -eo comm,etime,user | grep httpd
La salida a continuación muestra que el servicio HTTPD ha estado en ejecución durante 1 hora, 48 minutos y 17 segundos.

Resolver problemas de rendimiento del sistema Linux
Si tu sistema no está funcionando como debería, por ejemplo, si está inusualmente lento, puedes realizar algunas pruebas de diagnóstico del sistema de la siguiente manera.
26. Encuentra los procesos en ejecución principales por mayor uso de memoria y CPU en Linux.
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head OR $ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

27. Para finalizar procesos de Linux/aplicaciones no respondientes o cualquier proceso que esté consumiendo mucho tiempo de CPU.
Primero, encuentra el PID del proceso o aplicación no respondiente.
$ ps -A | grep -i stress
Luego usa el comando kill para terminarlo inmediatamente.
$ kill -9 2583 2584

Mostrar información de seguridad
28. Muestra el contexto de seguridad (específicamente para SELinux) de esta manera.
$ ps -eM OR $ ps --context

29. También puedes mostrar información de seguridad en un formato definido por el usuario con este comando.
$ ps -eo euser,ruser,suser,fuser,f,comm,label

Realizar monitoreo de procesos en tiempo real utilizando la utilidad Watch
30. Finalmente, dado que ps muestra información estática, puedes utilizar la utilidad watch para realizar monitoreo de procesos en tiempo real con salida repetitiva, mostrada cada segundo como en el siguiente comando (especifica un comando ps personalizado para lograr tu objetivo).
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

Importante: ps solo muestra información estática, para ver una salida actualizada con frecuencia puedes utilizar herramientas como htop; top, y glances: las dos últimas son de hecho herramientas de monitoreo del rendimiento del sistema Linux.
También te podría interesar leer los siguientes artículos relacionados.
- Cómo encontrar un nombre de proceso utilizando el número PID en Linux
- Encuentra los procesos en ejecución con mayor uso de memoria y CPU en Linux
- A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
- Cómo encontrar y matar procesos en ejecución en Linux
- Cómo iniciar un comando de Linux en segundo plano y desvincular el proceso en la terminal
Eso es todo por ahora. Si tienes algún ejemplo útil del comando ps para compartir (sin olvidar explicar qué hace), utiliza el formulario de comentarios a continuación.
Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/