30 ejemplos útiles de comandos ps para la supervisión de procesos de Linux


ps (estado de procesos) es una utilidad nativa de Unix/Linux para ver información relativa a una selección de procesos en ejecución en un sistema: lee esta información de los archivos virtuales en el sistema de archivos/proc. Es una de las utilidades importantes para la administración de sistemas específicamente bajo supervisión de procesos, para ayudarlo a comprender qué está sucediendo en un sistema Linux.

Tiene numerosas opciones para manipular su salida, sin embargo, encontrará una pequeña cantidad de ellas prácticamente útiles para el uso diario.

En este artículo, veremos 30 ejemplos útiles de comandos ps para monitorear procesos activos en ejecución en un sistema Linux.

Tenga en cuenta que ps produce una salida con una línea de encabezado, que representa el significado de cada columna de información; puede encontrar el significado de todas las etiquetas en la página de manual de ps.

Lista de todos los procesos en el shell actual

1. Si ejecuta el comando ps sin ningún argumento, muestra los procesos para el shell actual.

$ ps 

Imprima todos los procesos en diferentes formatos

2. Visualice todos los procesos activos en un sistema Linux en formato genérico (Unix/Linux).

$ ps -A
OR
$ ps -e

3. Visualice todos los procesos en formato BSD.

$ ps au
OR
$ ps axu

4. Para realizar un listado de formato completo, agregue el indicador -f o -F .

$ ps -ef
OR
$ ps -eF

Mostrar procesos en ejecución del usuario

5. Puede seleccionar todos los procesos de su propiedad (corredor del comando ps, root en este caso), escriba:

$ ps -x 

6. Para mostrar los procesos de un usuario por ID de usuario real (RUID) o nombre, use la marca -U .

$ ps -fU tecmint
OR
$ ps -fu 1000

7. Para seleccionar los procesos de un usuario por ID de usuario efectivo (EUID) o nombre, use la opción -u .

$ ps -fu tecmint
OR
$ ps -fu 1000

Imprima todos los procesos que se ejecutan como raíz (ID real y efectivo)

8. El siguiente comando le permite ver todos los procesos que se ejecutan con privilegios de usuario raíz (ID real y efectivo) en formato de usuario.

$ ps -U root -u root 

Procesos de grupo de visualización

9. Si desea enumerar todos los procesos que pertenecen a un determinado grupo (ID de grupo real (RGID) o nombre), escriba.

$ ps -fG apache
OR
$ ps -fG 48

10. Para enumerar todos los procesos que pertenecen al nombre de grupo efectivo (o sesión), escriba.

$ ps -fg apache

Procesos de visualización por PID y PPID

11. Puede enumerar los procesos por PID de la siguiente manera.

$ ps -fp 1178

12. Para seleccionar el proceso por PPID, escriba.

$ ps -f --ppid 1154

13. Realice una selección utilizando una lista PID.

$ ps -fp 2226,1154,1146

Procesos de visualización por TTY

14. Para seleccionar procesos por tty, use el indicador -t de la siguiente manera.

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1

Árbol de proceso de impresión

15. Un árbol de procesos muestra cómo los procesos del sistema están vinculados entre sí; los procesos cuyos padres han sido eliminados son adoptados por init (o systemd).

$ ps -e --forest 

16. También puede imprimir un árbol de procesos para un proceso dado como este.

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 

Hilos de proceso de impresión

17. Para imprimir todos los hilos de un proceso, use el indicador -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

Con las opciones -o o –format, ps le permite crear formatos de salida definidos por el usuario como se muestra a continuación.

18. Para enumerar todos los especificadores de formato, incluya la marca L .

$ ps L

19. El siguiente comando le 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 agradable, la hora de inicio y el tiempo transcurrido de un proceso.

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

21. Encontrar un nombre de proceso usando su PID.

$ ps -p 1154 -o comm=

Mostrar procesos padre e hijo

22. Para seleccionar un proceso específico por su nombre, use la bandera -C, esto también mostrará todos sus procesos secundarios.

$ ps -C sshd

23. Encuentre todos los PID de todas las instancias de un proceso, lo que resulta útil al escribir scripts que necesitan leer los PID de un archivo o salida estándar.

$ ps -C httpd -o pid=

24. Verificar el tiempo de ejecución de un proceso.

$ ps -eo comm,etime,user | grep httpd

El siguiente resultado muestra que el servicio HTTPD se ha estado ejecutando durante 1 hora, 48 minutos y 17 segundos.

Solucionar problemas de rendimiento del sistema Linux

Si su sistema no funciona como debería, por ejemplo, si es inusualmente lento, puede solucionar algunos problemas del sistema de la siguiente manera.

26. Encuentre los principales procesos en ejecución 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 matar procesos de Linux/aplicaciones que no responden o cualquier proceso que consuma mucho tiempo de CPU.

Primero, busque el PID del proceso o aplicación que no responde.

$ ps -A | grep -i stress

Luego use el comando kill para terminarlo inmediatamente.

$ kill -9 2583 2584

Imprimir información de seguridad

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

$ ps -eM
OR
$ ps --context

29. También puede mostrar información de seguridad en un formato definido por el usuario con este comando.

$ ps -eo  euser,ruser,suser,fuser,f,comm,label

Realice la supervisión de procesos en tiempo real con la utilidad Watch

30. Finalmente, dado que ps muestra información estática, puede emplear la utilidad watch para realizar un monitoreo de procesos en tiempo real con salida repetitiva, que se muestra después de cada segundo como en el comando a continuación (especifique un comando ps personalizado para lograr su objetivo).

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

Importante: ps solo muestra información estática, para ver los resultados que se actualizan con frecuencia, puede usar herramientas como miradas: las dos últimas son, de hecho, herramientas de monitoreo del rendimiento del sistema Linux.

También le puede interesar leer los siguientes artículos relacionados.

  1. Cómo encontrar un nombre de proceso usando un número PID en Linux
  2. Encuentre los principales procesos en ejecución por mayor uso de memoria y CPU en Linux
  3. Una guía para los comandos Kill, Pkill y Killall para finalizar un proceso en Linux
  4. Cómo encontrar y eliminar procesos en ejecución en Linux
  5. Cómo iniciar el comando de Linux en segundo plano y desconectar el proceso en la terminal

Eso es todo por ahora. Si tiene algún ejemplo útil de comando ps para compartir (sin olvidar explicar lo que hace), use el formulario de comentarios a continuación.