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:
- 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
- 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.
- 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
- 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.
- Ver todos los procesos excepto los líderes de sesión:
[root@rhel7 ~]# ps -d
- 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
- Ver todos los procesos asociados con este terminal:
[root@rhel7 ~]# ps -T
- Ver todos los procesos en ejecución:
[root@rhel7 ~]# ps -r
- 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
- 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
- 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
- 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
- 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
- Aquí, mencionamos tres ID de proceso: 1, 904 y 27223, que están separados por espacios en blanco.
- 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.
- 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
- 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
- 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- Use -f para ver la lista de formato completo.
- 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
- 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
- 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
- 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.
- 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
- 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
- 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
- Ver comando con formato de señal.
[root@rhel7 ~]# ps s 766
- 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
- 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
- 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
- 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
- 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