El ps es un comando integrado que se utiliza en los sistemas operativos Unix/Linux para enumerar los procesos que se están ejecutando actualmente. Muestra una instantánea estática con información sobre los procesos, mientras que top, htop y las miradas muestran actualizaciones repetitivas.
El comando Ps viene con muchas opciones para manipular las salidas. Extrae toda la información de los procesos del sistema de archivos virtual /proc.
Este tutorial se centrará en explicar la forma de utilizar el comando ps junto con algunos ejemplos prácticos
La sintaxis del comando ps
La sintaxis básica para el uso del comando ps es la siguiente:
$ ps [options]
Las 'opciones' del comando ps pueden ser:
- Opciones de UNIX:precedido por un guión
- Opciones de BSD:deben usarse sin guión
- Opciones largas de GNU:precedidas por dos guiones
Este es un uso muy básico del comando ps. Simplemente escriba 'ps' en su consola para ver el resultado:
$ ps
Por defecto nos muestra cuatro columnas de información.
- PID es un ID de proceso del comando en ejecución (CMD)
- TTY es un lugar donde se ejecuta el comando en ejecución
- TIME indica cuánto tiempo usa la CPU mientras ejecuta el comando
- CMD es un comando que se ejecuta como un proceso actual
Ejecutar el comando ps sin ninguna opción es solo el formato más simple del comando, no devuelve mucha información. Para aprovechar al máximo la potencia del comando ps, ejecútelo con opciones adicionales que se explicarán con más detalle en las siguientes secciones.
01) Mostrar todos los procesos (formato UNIX)
Para ver todos los procesos en su sistema Linux, puede ejecutar cualquiera de los siguientes comandos:
$ ps -A
o:
$ ps -e
Además, para enumerar todos los procesos en ejecución, ejecute:
$ ps -r
02) Mostrar todos los procesos (formato BSD)
Para ver todos los procesos en su sistema Linux usando el comando ps en formato BSD, puede ejecutar los siguientes comandos:
$ ps ax
o
$ ps aux
donde:
- USUARIO:el usuario ejecuta el proceso
- PID - la identificación del proceso
- %CPU/%MEM:el porcentaje de CPU/RAM ocupado por los procesos
- VSZ:el tamaño de la memoria virtual que ocupan los procesos
- RSS:el tamaño de la memoria física ocupada por los procesos
- INICIO - hora de inicio
- STAT:el estado del proceso en el que:S (dormido), R (en ejecución), I (suspensión interrumpible).
- Tiempo:muestra cuánto tiempo de CPU le dio el kernel para ese proceso en ejecución.
- COMANDO - el comando que se ejecuta como un proceso actual
03) Mostrar todos los procesos que se ejecutarán mediante un comando
Para listar todos los procesos que serán ejecutados por un comando, usemos la siguiente sintaxis:
$ ps -C <command_name>
Por ejemplo, enumere todos los procesos del comando '/usr/sbin/kerneloops' ejecutando:
$ ps -C kerneloops
También puede usar un argumento en forma de una lista separada por comas o espacios en blanco, por ejemplo:
$ ps -C sshd,systemd
04) Mostrar todos los procesos que ejecuta un usuario
Si desea enumerar el proceso por usuario cuya identificación de usuario es 1000, ejecutemos el siguiente comando:
$ ps -u 1000
También puede buscar procesos por nombre de usuario:
$ ps -U root -u root u
El parámetro -U parameter
seleccionará por real user ID (RUID)
. Selecciona los procesos cuyo nombre de usuario real o ID está en la lista de la lista de usuarios. El ID de usuario real identifica al usuario que creó el proceso.
Mientras que el parámetro -u paramater
seleccionará por ID de usuario efectivo (EUID)
05) Mostrar procesos propiedad del grupo
Para enumerar todos los procesos que pertenecen a un nombre de grupo específico, ejecutemos el comando con -fG
opción. Por ejemplo:
$ ps -fG cas
Para mostrar todos los procesos por ID de grupo, puede ejecutar el comando con la opción '-g'. Por ejemplo:
$ ps -g 1
Salida:
PID TTY TIME CMD
1 ? 00:00:03 systemd
06) Mostrar procesos por PID
Puede enumerar todos los procesos por PID ejecutando el comando ps con la opción '-fp'. Por ejemplo:
$ ps -fp 34531
Salida:
UID PID PPID C STIME TTY TIME CMD
cas 34531 1 0 06:16 ? 00:00:00 /lib/systemd/systemd --user
Además, para listar todos los procesos por PPID, ejecutemos el comando con la opción '--ppid':
$ ps -f --ppid 34529
Salida:
UID PID PPID C STIME TTY TIME CMD
cas 34609 34529 0 06:16 ? 00:00:00 sshd: cas@pts/0
07) Mostrar procesos por TTY
Para mostrar todos los procesos por TTY, puede ejecutar el comando con la opción '-t'. Por ejemplo:
$ ps -t tty1
08) Mostrar procesos propiedad del usuario actual
Para enumerar todos los procesos que está ejecutando el usuario actual, ejecutemos el comando con la opción '-x':
$ ps -x
09) Mostrar todos los procesos con una lista de formato completo
Por ejemplo, ejecutemos el comando ps con -f
opción, para mostrar todo el proceso con el formato completo:
$ ps -af
10) Mostrar todos los procesos con formato extra
Además, para ver la lista extra de formato completo del resultado, ejecute el comando ps con -F
opción. Por ejemplo:
$ ps -F
11) Mostrar todos los procesos en formato de jerarquía ASCII
Para ilustrar, suponiendo que desea mostrar todo el proceso en su sistema Linux en formato de jerarquía de proceso de arte ASCII, ejecutemos:
$ ps af
La salida estará en formato "bosque":
12) Proceso de visualización en salida ampliada
Si desea ampliar la salida al ejecutar el comando ps, use w
opción:
$ ps w
Hagamos una comparación entre los resultados de ejecutar 'ps w' y 'ps':
13) Proceso de visualización según el formato definido por el usuario
Puede usar la siguiente sintaxis para ver en formato definido por el usuario:
Syntax:
$ ps --format column_name
$ ps -o column_name
$ ps o column_name
For example:
$ ps -e -o user,pid,cmd
14) Mostrar hilos con id de hilo
Por ejemplo, para mostrar subprocesos con la columna SPID (SPID es la identificación del subproceso), ejecute:
$ ps -aT
15) Mostrar la información sobre hilos
Además, puede usar la opción '-L' para obtener información sobre subprocesos en su sistema Linux:
$ ps -aL
La salida con la columna 'LWP' le muestra la identificación del hilo:
Algunos ejemplos más
01) Comprobar qué procesos consumen más RAM
El siguiente comando mostrará la mayor parte de la memoria usando procesos, %MEM
en la primera columna, PID
en la segunda columna y comando en la tercera columna para todos los procesos en ejecución en el sistema:
$ ps -eo pmem,pid,cmd | sort -k 1 -nr
02) Muestra todos los subprocesos de un ID de proceso específico
Esto mostrará todos los subprocesos de un pid de proceso en particular.
$ ps -Lf -p 3482
03) Muestra el hijo de un proceso padre
Esto mostrará todos los procesos secundarios de un proceso y es útil para averiguar qué procesos se han bifurcado de este proceso principal.
$ ps -o pid,pcpu,pmem,uname,comm -C apache2
04) Muestra cuánto tiempo se ha estado ejecutando el proceso
El siguiente comando mostrará cuánto tiempo se ha estado ejecutando el proceso 'mysql' en el sistema:
$ ps -e -o pid,comm,etime | grep mysql
3107 mysqld_safe 18-07:01:53
3469 mysqld 18-07:01:52
etime
:tiempo transcurrido desde que se inició el proceso, en la forma [[DD-]hh:]mm:ss.etimes
:tiempo transcurrido desde que se inició el proceso, en segundos.
05) Obtener información de seguridad
Si queremos ver quién está actualmente conectado a su servidor, podemos verlo usando el comando ps:
$ ps -eo pid,user,args
Ahora puede asignar pids a sus respectivas unidades systemd con el siguiente comando:
$ ps -e -o pid,unit,cmd
Conclusión
pstree (o use ps -axjf ) y pgrep son comandos adicionales que pueden ayudar a obtener información sobre el proceso en ejecución.
Puede usar ps como monitor en tiempo real usando el comando watch, digamos, queremos filtrar procesos por CPU y el informe de uso de memoria se actualiza cada 1 segundo.
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
En este tutorial, aprendimos muchas formas de usar el comando ps en Linux. Para explorar todas las opciones, consulte la página man de ps. Gracias por leer y por favor deje su sugerencia en la sección de comentarios a continuación.