30 ejemplos útiles del comando ‘ps’ para monitoreo de procesos en Linux

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 
List Current Running Processes

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
List Processes in Standard Format

3. Muestra todos los procesos en formato BSD.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4. Para realizar una lista de formato completo, añade la bandera -f o -F.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

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
List User Processes by ID

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 
Display Root User Running Processes

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
Display Group Processes

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
List Processes by PID

12. Para seleccionar procesos por PPID, escribe.

$ ps -f --ppid 1154
List Process by PPID

13. Realiza una selección utilizando una lista de PID.

$ ps -fp 2226,1154,1146
List Processes by PIDs

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
List Processes by TTY

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 
List Process Tree

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 
List Tree View of Process

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
List Process Threads

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
List Processes with Names

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
List Process ID Information

21. Para encontrar un nombre de proceso usando su PID.

$ ps -p 1154 -o comm=
Find Process using PID

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
Find Parent-Child Process

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=
Find All Process PIDs

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.

Find Process Uptime

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
Find Top Running Processes

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
Find and Kill a Process

Mostrar información de seguridad

28. Muestra el contexto de seguridad (específicamente para SELinux) de esta manera.

$ ps -eM
OR
$ ps --context
Find SELinux 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
List SELinux Context by Users

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'
Real-Time Process Monitoring

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.

  1. Cómo encontrar un nombre de proceso utilizando el número PID en Linux
  2. Encuentra los procesos en ejecución con mayor uso de memoria y CPU en Linux
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. Cómo encontrar y matar procesos en ejecución en Linux
  5. 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/