¿Que es el comando ps en Linux?
El comando ps en Linux se usa para mostrar los procesos en ejecución en el sistema. Puede obtener información como el ID de proceso (PID) para los procesos que usted o cualquier otro usuario está ejecutando en el mismo sistema Linux.
El comando ps es una herramienta extensa en sí misma y tiene más de 80 opciones de comando. Puedes entender su fuerza y complejidad. Es por eso que les mostraré algunos de los ejemplos más comunes y útiles del comando ps en Linux.
Uso esencial del comando ps en Linux
Si usa el comando ps sin ninguna opción en Linux, mostrará los procesos en ejecución en el shell actual:
ps
Esta es la salida. Envié el comando Gedit en segundo plano, por eso muestra tres procesos; de lo contrario, normalmente verá solo ps y bash.
PID TTY TIME CMD
503 pts/0 00:00:00 gedit
2053 pts/0 00:00:00 ps
31585 pts/0 00:00:00 bash
Aquí:
- PID es el ID de proceso único del proceso
- TTY es el tipo de terminal en el que el usuario está conectado. pts significa pseudo terminal
- TIME le indica cuánto tiempo se ha estado ejecutando el proceso
- CMD es el comando que ejecuta para iniciar el proceso
Ahora bien, esto realmente no proporciona ninguna información real y útil. Veamos algunos ejemplos mejores del comando ps:
1. Vea todo su proceso en ejecución
Si desea ver todos los procesos ejecutados por usted, puede usar el comando ps con la opción x como esta:
ps -x
La opción x mostrará todos los procesos incluso si no están asociados con el tty actual (tipo de terminal) o si no tienen un terminal de control (como demonios).
La opción anterior x es opcional, pero la convención general de Linux es usar las opciones anteriores, por lo que le aconsejo que siga siguiéndola. No te hará daño.
Así es como se ve la salida. He truncado la salida porque tenía cientos de líneas:
PID TTY STAT TIME COMMAND
503 pts/0 Sl 0:00 gedit
2245 ? S 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
3039 ? Ss 0:00 /lib/systemd/systemd --user
3040 ? S 0:00 (sd-pam)
3054 ? SLl 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
3059 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env
El STAT en la salida anterior significa Códigos de estado del proceso. Puede encontrar una tabla detallada en la página man del comando ps.
Pero rara vez verá el comando ps usado solo con la opción x. Suele ir acompañado de la opción u de esta manera:
ps -ux
Con la opción u, tendrás información detallada de cada proceso:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
abhishek 503 0.0 0.4 681580 37516 pts/0 Sl 18:09 0:00 gedit
abhishek 2245 0.0 0.0 11300 1496 ? S 18:37 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
abhishek 3039 0.0 0.0 77344 3508 ? Ss 10:37 0:00 /lib/systemd/systemd --user
abhishek 3040 0.0 0.0 114632 360 ? S 10:37 0:00 (sd-pam)
abhishek 3054 0.0 0.1 517104 11512 ? SLl 10:37 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
Como puede ver, ahora obtiene el nombre de usuario y el consumo de CPU y memoria de cada proceso. RSS muestra cuánta memoria tiene actualmente el proceso en RAM mientras que VSZ es cuánta memoria virtual tiene el proceso en total.
2. Ver todos los procesos en ejecución con el comando ps aux
Probablemente verás ps -aux
o ps aux
todo el tiempo en tutoriales y documentaciones de Linux.
Con la opción -a agregada, puede ver los procesos en ejecución de todos los usuarios en el sistema Linux.
ps -aux
El resultado del comando es el mismo que ps -ux pero ahora también tiene procesos de otros usuarios. Gracias a la opción -u, puedes identificar qué proceso pertenece a qué usuario.
3. Vea todos los procesos en ejecución con el comando ps -ef en Linux
Además de ps -aux, también puede enumerar todos los procesos en ejecución con el comando -e. La práctica común es combinarlo con la opción f para obtener una lista completa de los comandos utilizados para ejecutar los procesos.
ps -ef
Tenga en cuenta que, antes de que e sea importante, de lo contrario, mostrará un resultado diferente. Te lo dije, ps es un comando confuso y complicado.
También puede combinar la opción H para ver todos los procesos en una vista encadenada con procesos secundarios debajo de sus padres:
ps -efH
4. Ver todos los procesos en ejecución de un determinado usuario
Para obtener información sobre todos los procesos ejecutados por un determinado usuario, puede utilizar la opción -U con el nombre de usuario:
ps -U user_name
Por ejemplo, puedo ver todos los procesos que ejecuta el usuario raíz de esta manera:
ps -U root
PID TTY TIME CMD
1 ? 00:00:41 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
8 ? 00:00:00 mm_percpu_wq
9 ? 00:00:03 ksoftirqd/0
10 ? 00:01:22 rcu_sched
5. Ver todos los procesos ejecutados por un grupo
También puede categorizar los procesos en ejecución por grupo en lugar de por usuario proporcionando el nombre del grupo o la identificación del grupo:
ps -G group_name_or_id
Puede combinar con la opción f para obtener la lista completa.
6. Obtener todas las ocurrencias y PID de un programa
Uno de los usos esenciales del comando ps es obtener el ID de proceso (PID) de un programa en ejecución. Normalmente, cuando busca eliminar un programa que se comporta mal, busca todas las ocurrencias del programa, obtiene sus PID y usa el comando de eliminación para finalizar el proceso.
ps -C program__name
Por ejemplo, si tengo que encontrar todas las instancias en ejecución del administrador de paquetes apt:
ps -C apt
PID TTY TIME CMD
11425 pts/1 00:00:00 apt
También puede usar el comando grep para obtener un resultado similar.
ps aux | grep program_name
7. Obtener información de proceso sobre un PID
¡Bien! Tiene un PID pero no sabe a qué proceso pertenece. Puede usar el comando ps para encontrar la información del proceso desde su PID de esta manera:
ps -pN
Puede usar más de un PID separándolos con coma:
ps -pN1,N2,N3
¿Qué más?
Como dije antes, ps es un comando complicado y extenso. Estos fueron algunos de los ejemplos de comandos ps más comunes que necesitará la mayor parte del tiempo. Si quieres más, siempre puedes consultar su página de manual.
Si tiene algún otro ejemplo útil del comando ps que usa regularmente, ¿por qué no lo comparte con el resto de nosotros en la sección de comentarios?