Deseo conocer cuáles son todos los procesos que están utilizando el sistema de archivos montado en /usr/local
. Es decir, aquellos que están utilizando al menos un archivo presente dentro del mismo. ¿Cómo es posible conseguirlo? En este artículo te lo explico.
¿Para qué puede ser útil conocer todos los procesos en ejecución utilizando cierto sistema de archvios? Por ejemplo para desmontarlo, ya sea para ampliar la partición, correr fsck
, etc. De esta manera es posible conocer qué servicios es necesario detener antes de poder desmontar el sistema de archivos en cuestión. No hace falta aclarar que en Linux no es posible desmontar un sistema de archivos si existen procesos que lo están utilizando.
Para comenzar, si fuser
no se encuentra disponible, instalar el paquete psmisc
:
root@debian:~# apt-get install psmisc
El sistema operativo utilizado como ejemplo tiene el sistema de archivos /usr/local
montado desde un volúmen LVM:
root@debian:~# mount | grep local /dev/mapper/vg_debian-lv_usrlocal on /usr/local type ext4 (rw,noatime,nodiratime,data=ordered)
Es necesario desmontar dicho filesystem, ya sea para expandir un volúmen o para redimensionar una partición. A tal fin, antes es necesario detener cualquier proceso utilizando el sistema de archivos.
Para conocer cuáles procesos están haciendo uso del mismo, se debe utilizar la herramienta fuser
con las opciones -mv
:
root@debian:~# fuser -mv /usr/local/ USER PID ACCESS COMMAND /usr/local: root kernel mount /usr/local root 2169 ...e. nginx root 2592 ...e. php-fpm www-data 2593 ...e. php-fpm www-data 2594 ...e. php-fpm postgres 2596 ...e. postgres postgres 2597 ...e. postgres postgres 2654 ...e. postgres postgres 2656 ...e. postgres postgres 2657 ...e. postgres postgres 2658 ...e. postgres postgres 2659 ...e. postgres postgres 2660 ...e. postgres postgres 2661 ...e. postgres postgres 2662 ...e. postgres postgres 2664 ...e. postgres postgres 2665 ...e. postgres postgres 2666 ...e. postgres postgres 2667 ...e. postgres postgres 2668 ...e. postgres postgres 2669 ...e. postgres www-data 9407 ...e. nginx www-data 9408 ...e. nginx www-data 9409 ...e. nginx www-data 9410 ...e. nginx www-data 29531 ...e. php-fpm
La opción -v
permite aumentar la verbosidad para listar los nombres de los ejecutables asociados, y la opción -m
permite listar todos los procesos haciendo uso de un filesystem. La salida verbosa muestra el nombre de usuario y tipo de acceso (en este ejemplo e
significa que están ejecutando un archivo dentro del filesystem) además del PID.
Para más información, consultar la página de manual de fuser
(man fuser
).