Anteriormente demostré el uso de la herramienta fuser para listar los procesos utilizando cierto archivo. Esta herramienta discrimina qué tipo de uso se le está dando al archivo, y entre ellos, permite determinar si un archivo ha sido cargado como módulo mapeado en memoria o como librería compartida.



Veamos cómo funciona tomando, la libc como ejemplo. La libc es la librería estándar del lenguaje C y es utilizada por casi todo programa que ha sido desarrollado en C. La shell Bash es unpo de los muchos programas escritos en C, con ldd es posible listar todas las librerías compartidas de las cuales depende un ejecutable:

emi@hal9000:~$ which bash
/bin/bash
emi@hal9000:~$ ldd /bin/bash
	linux-vdso.so.1 (0x00007fff749ef000)
	libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f2ded2a9000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2ded0a5000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2decd06000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f2ded4d3000)

Se observa que, entre las diferentes librerías dinámicas que enlaza el binario, se encuentra listada la libc, cargada desde el archivo /lib/x86_64-linux-gnu/libc.so.6. Sin embargo, se trata de un enlace simbólico a la versión instalada:

emi@hal9000:~$ ll /lib/x86_64-linux-gnu/libc.so.6
lrwxrwxrwx 1 root root 12 Feb  6  2019 /lib/x86_64-linux-gnu/libc.so.6 -> libc-2.24.so
emi@hal9000:~$ file /lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6: symbolic link to libc-2.24.so
emi@hal9000:~$ file /lib/x86_64-linux-gnu/libc-2.24.so 
/lib/x86_64-linux-gnu/libc-2.24.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=775143e680ff0cd4cd51cce1ce8ca216e635a1d6, for GNU/Linux 2.6.32, stripped

Ahora bien, para saber qué procesos en ejecución están haciendo uso de esta librería compartida, es posible recurrir a la herramienta fuser:

emi@hal9000:~$ fuser -v /lib/x86_64-linux-gnu/libc-2.24.so
                     USER        PID ACCESS COMMAND
/lib/x86_64-linux-gnu/libc-2.24.so:
                     emi        2087 ....m sh
                     emi        2130 ....m dbus-launch
                     emi        2131 ....m dbus-daemon
                     emi        2176 ....m xfce4-session
                     emi        2178 ....m at-spi-bus-laun
                     emi        2183 ....m dbus-daemon
                     emi        2185 ....m at-spi2-registr
                     emi        2189 ....m xfconfd
                     emi        2196 ....m xfwm4
                     emi        2197 ....m Thunar
                     emi        2199 ....m xfce4-panel
                     emi        2200 ....m xfsettingsd
                     emi        2202 ....m xfdesktop
                     emi        2210 ....m xfce4-terminal
                     emi        2211 ....m owncloud
                     emi        2216 ....m xfce4-power-man
                     emi        2247 ....m gvfsd
                     emi        2392 ....m panel-6-systray
                     emi        2393 ....m panel-2-actions
                     emi        2394 ....m panel-17-pulsea
                     emi        2403 ....m gvfs-udisks2-vo
                     emi        2406 ....m pulseaudio
                     emi        2427 ....m bash
                     emi        2441 ....m polkit-gnome-au
                     emi        2444 ....m xscreensaver
                     emi        2450 ....m applet.py
                     emi        2551 ....m firefox-esr
                     emi        2605 ....m Web Content
                     emi        2648 ....m Web Content
                     emi        2671 ....m Web Content
                     emi        2673 ....m Web Content
                     emi        3359 ....m gvfsd-metadata
                     emi        3363 ....m gvfsd-trash
                     emi        3583 ....m geany
                     emi        3593 ....m bash

La opción -v permite listar todos los procesos de forma similar a ps. Cada línea corresponde con un proceso en ejecución. Se muestra el nombre de usuario con el cual corre el proceso, el PID, y el nombre del archivo binario o comando.

En esta salida, la columna "ACCESS" determina el tipo de acceso. Todos aquellos procesos que estén usando el archivo como librería compartida o módulo cargado, aparecen listados con una letra m en esta columna.

Si se desea, es posible filtrar la salida con grep:

emi@hal9000:~$ fuser -v /lib/x86_64-linux-gnu/libc-2.24.so 2>&1 | grep '....m'
                     emi        2087 ....m sh
                     emi        2130 ....m dbus-launch
                     emi        2131 ....m dbus-daemon
                     emi        2176 ....m xfce4-session
                     emi        2178 ....m at-spi-bus-laun
                     emi        2183 ....m dbus-daemon
                     emi        2185 ....m at-spi2-registr
                     emi        2189 ....m xfconfd
                     emi        2196 ....m xfwm4
                     emi        2197 ....m Thunar
                     emi        2199 ....m xfce4-panel
                     emi        2200 ....m xfsettingsd
                     emi        2202 ....m xfdesktop
                     emi        2210 ....m xfce4-terminal
                     emi        2211 ....m owncloud
                     emi        2216 ....m xfce4-power-man
                     emi        2247 ....m gvfsd
                     emi        2392 ....m panel-6-systray
                     emi        2393 ....m panel-2-actions
                     emi        2394 ....m panel-17-pulsea
                     emi        2403 ....m gvfs-udisks2-vo
                     emi        2406 ....m pulseaudio
                     emi        2427 ....m bash
                     emi        2441 ....m polkit-gnome-au
                     emi        2444 ....m xscreensaver
                     emi        2450 ....m applet.py
                     emi        2551 ....m firefox-esr
                     emi        2605 ....m Web Content
                     emi        2648 ....m Web Content
                     emi        2671 ....m Web Content
                     emi        2673 ....m Web Content
                     emi        3359 ....m gvfsd-metadata
                     emi        3363 ....m gvfsd-trash
                     emi        3583 ....m geany
                     emi        3593 ....m bash
                     emi        4937 ....m tumblerd
                     emi        4966 ....m grep


Tal vez pueda interesarte


Compartí este artículo