Visualizar Procesos
Table of contents
Rastrear y Monitorear Procesos
En Ubuntu contamos con tres comandos básicos y fácil de usar para ver los procesos activos.
- ps: muestra los procesos en forma de lista
- pstree: muestra los procesos en forma de árbol con dependencias
- htop: muestra una vista dinámica en una terminal ASCII
Utilidades Para Monitorear Procesos
Hay varias utilidades disponibles en la linea de comandos para visualizar los procesos y sub-procesos activos en el sistema.
El uso de estas utilidades asiste en la identificación de problemas de uso eficiente de CPU y memoria.
top
El comando top
muestra la actividad del sistem.
Aqui usamos la bandera -n
con el valor 1
para mostrar un vista estática de los procesos que estan corriendo.
-> top -n 1
top - 17:32:41 up 5 days, 18:43, 0 users, load average: 0.00, 0.00, 0.00
Tasks: 20 total, 1 running, 19 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16486.6 total, 10270.5 free, 1032.5 used, 5183.6 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 14788.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 182812 11648 8192 S 0.0 0.1 0:18.14 systemd
47 message+ 20 0 8800 4480 3840 S 0.0 0.0 0:03.32 dbus-daemon
49 root 20 0 30124 18560 9984 S 0.0 0.1 0:00.06 networkd-dispat
53 root 20 0 3192 2048 1920 S 0.0 0.0 0:00.00 agetty
54 root 20 0 15420 9088 7552 S 0.0 0.1 0:00.00 sshd
58 root 20 0 107500 21356 13184 S 0.0 0.1 0:00.12 unattended-upgr
626 root 20 0 41496 4496 4096 S 0.0 0.0 0:01.48 master
628 postfix 20 0 41880 7680 7040 S 0.0 0.0 0:00.17 qmgr
635 root 20 0 4756 3712 3072 S 0.0 0.0 0:00.02 bash
670 root 20 0 7204 4224 3712 S 0.0 0.0 0:00.00 su
672 devuser 20 0 16672 9216 7936 S 0.0 0.1 0:00.50 systemd
673 devuser 20 0 168364 4496 1664 S 0.0 0.0 0:00.00 (sd-pam)
678 devuser 20 0 4860 3712 3072 S 0.0 0.0 0:01.08 bash
1156 root 20 0 293248 20352 17536 S 0.0 0.1 0:00.94 packagekitd
1160 root 20 0 234492 7168 6528 S 0.0 0.0 0:00.15 polkitd
16527 root 20 0 15352 7424 6528 S 0.0 0.0 0:00.14 systemd-logind
16532 root 19 -1 47716 13952 13184 S 0.0 0.1 0:00.35 systemd-journal
16533 systemd+ 20 0 25540 13552 9344 S 0.0 0.1 0:00.13 systemd-resolve
16605 postfix 20 0 41840 7808 7168 S 0.0 0.0 0:00.00 pickup
16675 devuser 20 0 7328 3200 2688 R 0.0 0.0 0:00.00 top
ps
El comando ps
muestra la lista en forma larga con PID
en forma ascendente.
devuser@ubuntu2204-2-devesp
~
hist:54 -> ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 02:40 ? 00:00:00 /usr/sbin/init sleep infinity
root 27 1 0 02:40 ? 00:00:00 /lib/systemd/systemd-journald
systemd+ 46 1 0 02:40 ? 00:00:00 /lib/systemd/systemd-resolved
message+ 51 1 0 02:40 ? 00:00:00 @dbus-daemon --system --address=systemd: --nofork --
root 53 1 0 02:40 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-
root 55 1 0 02:40 ? 00:00:00 /lib/systemd/systemd-logind
root 57 1 0 02:40 ? 00:00:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root 59 1 0 02:40 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 start
root 64 1 0 02:40 ? 00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unat
root 642 1 0 02:40 ? 00:00:00 /usr/lib/postfix/sbin/master -w
postfix 644 642 0 02:40 ? 00:00:00 qmgr -l -t unix -u
postfix 692 642 0 03:25 ? 00:00:00 pickup -l -t unix -u -c
root 718 0 0 04:43 pts/0 00:00:00 bash
devuser 753 1 0 05:00 ? 00:00:00 /lib/systemd/systemd --user
devuser 754 753 0 05:00 ? 00:00:00 (sd-pam)
devuser 759 751 0 05:00 pts/1 00:00:00 -bash
root 826 1 0 05:01 ? 00:00:00 /usr/libexec/packagekitd
root 830 1 0 05:01 ? 00:00:00 /usr/libexec/polkitd --no-debug
La salida puede ser alterada usando banderas. El ejemplo siguiente ps aux --forest
muestra el árbol de dependencias entre procesos.
devuser@ubuntu2204-2-devesp
~
hist:55 -> ps aux --forest
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 718 0.0 0.0 4756 3712 pts/0 Ss 04:43 0:00 bash
root 749 0.0 0.0 8476 4992 pts/0 S+ 05:00 0:00 \_ sudo su - devuser
root 750 0.0 0.0 8476 2280 pts/1 Ss 05:00 0:00 \_ sudo su - devuser
root 751 0.0 0.0 7204 4480 pts/1 S 05:00 0:00 \_ su - devuser
devuser 759 0.0 0.0 4756 3840 pts/1 S 05:00 0:00 \_ -bash
devuser 865 0.0 0.0 7060 2816 pts/1 R+ 05:15 0:00 \_ ps aux --forest
root 1 0.0 0.0 165356 9984 ? Ss 02:40 0:00 /usr/sbin/init sleep infinity
root 27 0.0 0.0 64116 14356 ? S<s 02:40 0:00 /lib/systemd/systemd-journald
systemd+ 46 0.0 0.0 25528 13004 ? Ss 02:40 0:00 /lib/systemd/systemd-resolved
message+ 51 0.0 0.0 8596 4352 ? Ss 02:40 0:00 @dbus-daemon --system --address=systemd: --nofork --nopidfil
root 53 0.0 0.1 30124 18304 ? Ss 02:40 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-
root 55 0.0 0.0 15324 7296 ? Ss 02:40 0:00 /lib/systemd/systemd-logind
root 57 0.0 0.0 3192 1920 ? Ss 02:40 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root 59 0.0 0.0 15420 8960 ? Ss 02:40 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 64 0.0 0.1 107500 20608 ? Ssl 02:40 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-u
root 642 0.0 0.0 41496 4496 ? Ss 02:40 0:00 /usr/lib/postfix/sbin/master -w
postfix 644 0.0 0.0 41880 7552 ? S 02:40 0:00 \_ qmgr -l -t unix -u
postfix 858 0.0 0.0 41836 7680 ? S 05:06 0:00 \_ pickup -l -t unix -u -c
devuser 753 0.0 0.0 16672 8960 ? Ss 05:00 0:00 /lib/systemd/systemd --user
devuser 754 0.0 0.0 168408 4532 ? S 05:00 0:00 \_ (sd-pam)
root 826 0.0 0.1 293248 20352 ? Ssl 05:01 0:00 /usr/libexec/packagekitd
root 830 0.0 0.0 234496 7296 ? Ssl 05:01 0:00 /usr/libexec/polkitd --no-debug
pstree
El comando pstree
muestra los procesos en forma de árbol que es útil para ver la relacion entre procesos principales y sub-procesos.
Primero, instalemos el paquete psmisc
en Ubuntu que provee el comando pstree
.
-> sudo apt-get install psmisc -y
En RHEL instala el paquete psmisc disponible el repositorio baseos.
-> yum whatprovides psmisc -y
El comando pstree
muestra un árbol con relaciones que muestra dependencias entre los procesos.
devuser@ubuntu2204-2-devesp
~
hist:53 -> pstree
systemd-+-agetty
|-dbus-daemon
|-master-+-pickup
| `-qmgr
|-networkd-dispat
|-packagekitd---3*[{packagekitd}]
|-polkitd---3*[{polkitd}]
|-sshd
|-systemd---(sd-pam)
|-systemd-journal
|-systemd-logind
|-systemd-resolve
`-unattended-upgr---{unattended-upgr}
htop
El comando htop
muestra una terminal ASCII que se actualiza dinámicamente dependiendo del nivel de actividad de los procesos.
La salida puede modificarse para mostrar un árbol con relaciones que muestra dependencias entre los procesos.
Primero hay que instalar la utilidad en Ubuntu.
sudo apt-get install htop -y
Luego podemos usar la utiliad asi:
-> htop
En el ejemplo siguiente de htop
presionamos la letra t
para mostrar la salida en forma de árbol, y presionamos la letra u
para seleccionar y solamenter ver el usuario root
.
Conclusion
Es importante conocer el estado de diferentes procesos en el sistema. Este conocimiento es crucial para determinar el estado general y salud de los procesos en general. Pasado el tiempo, podemos determinar si el sistema tiene la capacidad de sostener el nivel de presion o si necesitamos actualizar la configuracion para alcanzar funcionalidad optima. Es por esta razón que existen conceptos de computación tales como elasticidad, y optimización de plataformas.
Referencias
Glosario De Comandos
Los comandos siguientes son usados frecuentemente en sesiones de Linux.
- ps
- mostrar un vistazo de los procesos actuales.
- pstree
- mostrar los procesos en formato de árbol
- htop
- visualizador de procesos interactivo
- top
- mostrar procesos de Linux
Referencias Utiles
Paginas Manuales