Introducción
Cuando se trabaja en una máquina Linux, a veces puede ser necesario averiguar qué procesos se están ejecutando actualmente. Hay una serie de comandos que puede utilizar para encontrar información sobre los procesos en ejecución, siendo ps
y top
los más utilizados.
En este artículo, hablaremos sobre el comando pstree
Es similar a ps
, pero en lugar de enumerar los procesos en ejecución, los muestra en un árbol. El formato de árbol es una forma más conveniente de ver la jerarquía del proceso y hace que la salida sea más atractiva visualmente.
Si desea utilizar el comando Pstree en un servidor remoto, siga leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Cómo usar el comando pstree
La sintaxis general del pstree
es la siguiente:
ps [OPTIONS] [USER or PID]
En su forma más simple, cuando se invoca sin opciones o argumentos, pstree
muestra una estructura de árbol jerárquica de todos los procesos en ejecución.
En Debian y distribuciones derivadas, ya debería estar instalado de forma predeterminada; de lo contrario, ejecute este comando:
sudo apt-get install psmisc
Para instalarlo en CentOS /RHEL, dé el siguiente comando:
sudo yum install psmisc
Para usar el comando sin ninguna opción, simplemente escriba pstree
:
pstree
systemd─┬─VBoxService───7*[{VBoxService}]
├─accounts-daemon───2*[{accounts-daemon}]
├─2*[agetty]
├─atd
├─cron
├─dbus-daemon
├─irqbalance───{irqbalance}
├─2*[iscsid]
├─lvmetad
├─lxcfs───2*[{lxcfs}]
├─networkd-dispat───{networkd-dispat}
├─nginx───2*[nginx]...
El elemento superior /raíz del árbol es el proceso principal de todos los procesos del sistema. En este ejemplo, systemd
es el primer proceso que se inicia al inicio.
pstree
une ramas idénticas colocándolas entre corchetes y prefijándolas con un número entero que representa el número de ramas. Esto hace que la salida sea más legible y visualmente atractiva.
A continuación se muestra un ejemplo que muestra cómo se utilizan los corchetes:
├─2*[agetty]
Es igual a:
├─agetty
├─agetty
Para deshabilitar la fusión de ramas idénticas, use la opción -c
pstree -c
Los subprocesos de un proceso se muestran debajo del proceso principal y se muestran usando el nombre del proceso entre paréntesis. Aquí hay un ejemplo:
├─lxcfs───2*[{lxcfs}]
Utilice la -t
para mostrar los nombres completos de los hilos. Si desea ocultar hilos y solo mostrar procesos, use la opción -T
Normalmente, pstree
muestra muchas líneas de salida que no se ajustan a la pantalla. Para ver el resultado una página a la vez, canalice el comando less
pstree | less
Si se proporciona un nombre de usuario como argumento, pstree
solo muestra los procesos que pertenecen a ese usuario. Por ejemplo, el siguiente comando solo mostrará aquellos procesos que fueron iniciados por un usuario llamado noviello:
pstree noviello
Cuando el PID se especifica como un argumento, pstree
muestra un árbol con el proceso indicado como la raíz del árbol. Aquí hay un ejemplo:
pstree 1943
sshd───bash───pstree
Para mostrar los procesos principales de un proceso determinado, utilice la -s
seguida del proceso PID:
pstree -s 1943
systemd───sshd───sshd───bash───pstree
Mostrar PID y PGID
Por lo general, cuando se ejecuta el pstree
, la información más importante que busca el usuario es el ID del proceso. Por ejemplo, conocer el PID le permite detener un proceso fallido.
La -p
le dice al pstree
que muestre los PID:
pstree -p
Los PID se muestran entre paréntesis después de cada proceso o subproceso.
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956)
│ ├─{VBoxService}(957)
│ ├─{VBoxService}(958)
│ ├─{VBoxService}(959)
│ ├─{VBoxService}(960)
│ ├─{VBoxService}(961)
│ └─{VBoxService}(962)...
De forma predeterminada, pstree
ordena los procesos con el mismo padre por nombre. La -n
permite usar ordenación numérica, es decir, ordenar por PID:
pstree -pn
El ID de grupo PGID o PGID es el ID de proceso del primer miembro del grupo de proceso. Para ver los PGID, use la opción -g
pstree -g
Los PID también se muestran entre paréntesis después de cada proceso o subproceso.
systemd(1)─┬─VBoxService(954)─┬─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ └─{VBoxService}(954)...
Cuando se muestra PID o PGID, la combinación está implícitamente deshabilitada.
Mostrar argumentos de línea de comando
Algunos programas pueden invocarse con opciones de configuración especificadas como argumentos de línea de comando.
De forma predeterminada, pstree
no muestra argumentos de línea de comandos para los procesos en ejecución. Para ver cómo comenzó el proceso, use el comando junto con la opción -a
pstree -a
...
├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220
├─agetty -o -p -- \\u --noclear tty1 linux...
Resaltar un proceso
pstree
también le permite resaltar procesos para una mejor representación visual.
La -h
le dice a pstree
que resalte el proceso actual y todos sus ancestros.
pstree -h
Para resaltar un proceso específico, use la -H
seguida del ID del proceso:
pstree -H PID_NUMBER
Si no se admite el resaltado, el comando se cerrará con un error.
Conclusión
El pstree
muestra los procesos en ejecución en forma de estructura de árbol.
Para obtener información sobre todas pstree
opciones de pstree disponibles, escriba el man pstree
en la terminal.
man pstree