comando ps en Linux con ejemplos

Como todos sabemos, Linux es un sistema multitarea y multiusuario. Por lo tanto, permite que múltiples procesos operen simultáneamente sin interferir entre sí. El proceso es uno de los conceptos fundamentales importantes del sistema operativo Linux. Un proceso es una instancia de ejecución de un programa y lleva a cabo diferentes tareas dentro del sistema operativo. 

Linux nos proporciona una utilidad llamada ps para ver información relacionada con los procesos en un sistema que son las siglas de «Estado del proceso». El comando ps se usa para enumerar los procesos que se están ejecutando actualmente y sus PID, junto con otra información, depende de diferentes opciones. Lee la información del proceso de los archivos virtuales en el sistema de archivos /proc . /proc contiene archivos virtuales, esta es la razón por la que se denomina sistema de archivos virtual. 

ps ofrece numerosas opciones para manipular la salida según nuestras necesidades. 

Sintaxis – 
 

ps [options]

Opciones para el comando ps: 
 

  1. Selección de proceso simple: Muestra los procesos para el shell actual – 
     
[root@rhel7 ~]# ps
  PID TTY          TIME CMD
12330 pts/0    00:00:00 bash
21621 pts/0    00:00:00 ps
  1. El resultado contiene cuatro columnas de información. 
    Donde, 
    PID: el ID de proceso único 
    TTY: tipo de terminal en el que el usuario inició sesión 
    HORA: cantidad de CPU en minutos y segundos que el proceso ha estado ejecutando 
    CMD: nombre del comando que inició el proceso. 

    Nota: a veces, cuando ejecutamos el comando ps , muestra la HORA como 00:00:00. No es más que el tiempo total acumulado de utilización de la CPU para cualquier proceso y 00:00:00 indica que el kernel no ha proporcionado tiempo de CPU hasta ahora. En el ejemplo anterior, encontramos que, para bash, no se ha dado tiempo de CPU. Esto se debe a que bash es solo un proceso principal para diferentes procesos que necesitan bash para su ejecución y bash en sí mismo no está utilizando tiempo de CPU hasta ahora. 
     

  2. Ver procesos: vea todos los procesos en ejecución, use cualquiera de las siguientes opciones con ps: 
     
[root@rhel7 ~]# ps -A
[root@rhel7 ~]# ps -e
  1. Ver procesos no asociados con una terminal: vea todos los procesos, excepto los líderes de sesión y los procesos no asociados con una terminal. 
     
[root@rhel7 ~]# ps -a
  PID TTY          TIME CMD
27011 pts/0    00:00:00 man
27016 pts/0    00:00:00 less
27499 pts/1    00:00:00 ps

Nota: puede estar pensando que ¿qué es el líder de la sesión? Se asigna una sesión única a cada grupo de procesos. Entonces, el líder de la sesión es un proceso que inicia otros procesos. El ID de proceso del primer proceso de cualquier sesión es similar al ID de sesión.

  1. Ver todos los procesos excepto los líderes de sesión: 
     
[root@rhel7 ~]# ps -d
  1. Ver todos los procesos excepto aquellos que cumplen las condiciones especificadas (anula la selección): 
    Ejemplo: si desea ver solo el líder de la sesión y los procesos no asociados con una terminal. Entonces corre 
     
[root@rhel7 ~]# ps -a -N
OR
[root@rhel7 ~]# ps -a --deselect
  1. Ver todos los procesos asociados con este terminal: 
     
[root@rhel7 ~]# ps -T
  1. Ver todos los procesos en ejecución: 
     
[root@rhel7 ~]# ps -r
  1. Ver todos los procesos de su propiedad: Procesos, es decir, el mismo EUID que ps, lo que significa que ejecuta el comando ps, root en este caso: 
     
[root@rhel7 ~]# ps -x

Proceso de selección por lista

Aquí discutiremos cómo obtener la lista de procesos específicos con la ayuda del comando ps. Estas opciones aceptan un único argumento en forma de lista separada por comas o espacios en blanco. Se pueden utilizar varias veces. 
Por ejemplo: ps -p “1 2” -p 3,4 
 

  1. Seleccione el proceso por el nombre del comando. Esto selecciona los procesos cuyo nombre ejecutable se proporciona en cmdlist. Puede haber una posibilidad de que no sepa el ID del proceso y con este comando es más fácil buscar. 
    Sintaxis: ps -C nombre_comando 
     
Syntax :
ps -C command_name

Example :
[root@rhel7 ~]# ps -C dhclient
  PID TTY          TIME CMD
19805 ?        00:00:00 dhclient
  1. Seleccione por ID de grupo o nombre. El ID de grupo identifica el grupo del usuario que creó el proceso. 
     
Syntax :
ps -G group_name
ps --Group group_name

Example :
[root@rhel7 ~]# ps -G root
  1. Ver por ID de grupo: 
     
Syntax :
ps -g group_id
ps -group group_id

Example :
[root@rhel7 ~]# ps -g 1
  PID TTY          TIME CMD
    1 ?        00:00:13 systemd
  1. Ver proceso por ID de proceso. 
     
Syntax :
ps p process_id
ps -p process_id
ps --pid process_id

Example :
[root@rhel7 ~]#  ps p 27223
  PID TTY      STAT   TIME COMMAND
27223 ?        Ss     0:01 sshd: root@pts/2

[root@rhel7 ~]#  ps -p 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

[root@rhel7 ~]#  ps --pid 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

Puede ver varios procesos especificando varios ID de proceso separados por espacios en blanco o comas. 
Ejemplo: 
 

[root@rhel7 ~]#  ps -p 1 904 27223
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:13 /usr/lib/systemd/systemd --switched-root --system --d
  904 tty1     Ssl+   1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ?        Ss     0:01 sshd: root@pts/2
  1. Aquí, mencionamos tres ID de proceso: 1, 904 y 27223, que están separados por espacios en blanco. 
     
  2. Seleccione por ID de proceso principal. Al usar este comando, podemos ver todos los procesos que pertenecen al proceso principal, excepto el proceso principal. 
     
[root@rhel7 ~]# ps -p 766
  PID TTY          TIME CMD
  766 ?        00:00:06 NetworkManager

[root@rhel7 ~]# ps --ppid 766
  PID TTY          TIME CMD
19805 ?        00:00:00 dhclient

En el ejemplo anterior, el ID de proceso 766 se asigna a NetworkManager y este es el proceso principal para dhclient con el ID de proceso 19805. 
 

  1. Ver todos los procesos pertenecientes a cualquier ID de sesión. 
     
Syntax :
ps -s session_id
ps --sid session_id

Example :
[root@rhel7 ~]# ps -s 1248
  PID TTY          TIME CMD
 1248 ?        00:00:00 dbus-daemon
 1276 ?        00:00:00 dconf-service
 1302 ?        00:00:00 gvfsd
 1310 ?        00:00:00 gvfsd-fuse
 1369 ?        00:00:00 gvfs-udisks2-vo
 1400 ?        00:00:00 gvfsd-trash
 1418 ?        00:00:00 gvfs-mtp-volume
 1432 ?        00:00:00 gvfs-gphoto2-vo
 1437 ?        00:00:00 gvfs-afc-volume
 1447 ?        00:00:00 wnck-applet
 1453 ?        00:00:00 notification-ar
 1454 ?        00:00:02 clock-applet
  1. Seleccionar por tty. Esto selecciona los procesos asociados con el tty mencionado: 
     
Syntax :
ps t tty
ps -t tty
ps --tty tty

Example :
[root@rhel7 ~]# ps -t pts/0
  PID TTY          TIME CMD
31199 pts/0    00:00:00 bash
31275 pts/0    00:00:00 man
31280 pts/0    00:00:00 less
  1. Seleccione por ID o nombre de usuario efectivo. 
    Sintaxis: 
    ps U nombre_usuario/ID 
    ps -U nombre_usuario/ID 
    ps -u nombre_usuario/ID 
    ps –Usuario nombre_usuario/ID 
    ps –user nombre_usuario/ID 
    1. Use -f para ver la lista de formato completo. 
       
[tux@rhel7 ~]$ ps -af
tux      17327 17326  0 12:42 pts/0    00:00:00 -bash
tux      17918 17327  0 12:50 pts/0    00:00:00 ps -af
  1. Use -F para ver el formato extra completo. 
     
[tux@rhel7 ~]$ ps -F
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
tux      17327 17326  0 28848  2040   0 12:42 pts/0    00:00:00 -bash
tux      17942 17327  0 37766  1784   0 12:50 pts/0    00:00:00 ps -F
  1. Para ver el proceso según el formato definido por el usuario. 
     
Syntax :
[root@rhel7 ~]#  ps --format column_name
[root@rhel7 ~]#  ps -o column_name
[root@rhel7 ~]#  ps o column_name

Example :
[root@rhel7 ~]#  ps -aN --format cmd,pid,user,ppid
CMD                           PID USER      PPID
/usr/lib/systemd/systemd --     1 root         0
[kthreadd]                      2 root         0
[ksoftirqd/0]                   3 root         2
[kworker/0:0H]                  5 root         2
[migration/0]                   7 root         2
[rcu_bh]                        8 root         2
[rcu_sched]                     9 root         2
[watchdog/0]                   10 root         2
  1. En este ejemplo, deseo ver el comando, el ID del proceso, el nombre de usuario y el ID del proceso principal, así que paso los argumentos cmd, pid, user y ppid respectivamente. 
     
  2. Ver en formato de control de trabajo BSD: 
     
[root@rhel7 ~]# ps -j
  PID  PGID   SID TTY          TIME CMD
16373 16373 16373 pts/0    00:00:00 bash
19734 19734 16373 pts/0    00:00:00 ps
  1. Mostrar formato largo BSD: 
     
[root@rhel7 ~]# ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0   904   826  20   0 306560 51456 ep_pol Ssl+ tty1       1:32 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/run/lightdm/root/:0 -noli
4     0 11692 11680  20   0 115524  2132 do_wai Ss   pts/2      0:00 -bash
  1. Agregue una columna de datos de seguridad. 
     
[root@rhel7 ~]# ps -aM
LABEL                                                  PID  TTY    TIME    CMD
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 19534 pts/2 00:00:00 man
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 19543 pts/2 00:00:00 less
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 20469 pts/0 00:00:00 ps
  1. Ver comando con formato de señal. 
     
[root@rhel7 ~]# ps s 766
  1. Mostrar formato orientado al usuario 
     
[root@rhel7 ~]# ps u 1
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 128168  6844 ?        Ss   Apr08   0:16 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
  1. Mostrar formato de memoria virtual 
     
[root@rhel7 ~]# ps v 1
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
    1 ?        Ss     0:16     62  1317 126850 6844  0.6 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
  1. Si quieres ver el entorno de cualquier comando. Luego use la opción **e** – 
     
[root@rhel7 ~]# ps ev 766
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
  766 ?        Ssl    0:08     47  2441 545694 10448  1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  1. Ver procesos usando la memoria más alta. 
     
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

12 – imprimir un árbol de procesos 
 

[root@rhel7 ~]# ps --forest -C sshd
  PID TTY          TIME CMD
  797 ?        00:00:00 sshd
11680 ?        00:00:03  \_ sshd
16361 ?        00:00:02  \_ sshd
  1. Enumere todos los subprocesos para un proceso en particular. Utilice la opción -T o -L para mostrar los subprocesos de un proceso. 
     
[root@rhel7 ~]# ps -C sshd -L
  PID   LWP TTY          TIME CMD
  797   797 ?        00:00:00 sshd
11680 11680 ?        00:00:03 sshd
16361 16361 ?        00:00:02 sshd

Nota: para obtener una explicación de los diferentes contenidos de las columnas, consulte la página del manual. 
 

Publicación traducida automáticamente

Artículo escrito por Mausami_Inhe y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *