Localizar procesos sobre ficheros con fuser
La verdad es que no sabía como llamar al artículo sobre fuser, un comando poco conocido pero que nos puede sacar de más de un apuro. Forma parte de la extensa e increíble navaja suiza que es la shell o consola de comandos en GNU Linux, *BSD y resto de sistemas like-UNIX y UNIX
Sobre fuser y su funcionamiento
Identifica los procesos, mostrando su PID, que están utilizando un fichero, una carpeta o un socket. De hecho también nos brinda la posibilidad de matar dichos procesos.
La mejor manera de ver en que consiste es utilizarlo, su modo más básico es sin parámetros:
fuser .
En el resultado veremos los diferences PID o número de procesos que utilizan el fichero.
Se observa la información ofrecida. El único proceso es el mío propio como usuario, como podemos observar si utilizamos el comando ‘ps‘ Si además utilizamos el parámetro «-c» más el punto de montaje, nos mostrará los procesos que utilizan ficheros o directorios.
En la muestra he utilizado el directorio /proc, que cómo ya sabéis es un sistema de ficheros virtual. Lo he utilizado al saber que aparecerían múltiples procesos. Se observa que al final de cada proceso aparecen unas siglas. Os paso a explicar que significa cada letra:
- f,o – Significa que el proceso tiene abierto el fichero para lectura o escritura
- c – El proceso está corriendo sobre el directorio
- e,t – El proceso está utilizando en estos momentos el fichero
- r – El proceso del directorio root – chroot- se encuentra en el sistema de ficheros.
- m,s – El prceso ha mapeado el fichero o una librería compartida
Volvmeos a utilizar ‘ps‘ otra vez con varios de los procesos que hemos visto en la ubicación /proc.
Si queremos que comando ‘fuser‘ también nos muestr más información sobre los procesos, similar a ‘ps‘, podemos utilizar la variable «-v«
fuser -cv /var/log/nginx/fichero-de-log
En la siguiente imagen, sobre un log de acceso a nginx, de la propia página web que estáis leyendo, podemos ver las diferencias:
Al añadir el parámetro ‘-v‘ se nos muestra mucha más información.
Tiene muchas más opciones, por ejemplo, lo podemos utilizar sobre un socket. Para ello utilizamos el parámetro «-n«
fuser -v -n tcp 443
En la imagen vemos el número de procesos, cada uno de ellos corresponde a una conexión, del servidor nginx.
Si queremos matar los procesos tenemos que utilizar el parámetro «-k«, de «kill» En el ejemplo anterior, que son cinco procesos, nos preguntaría uno por uno si los queremos matar.
Aquí lo dejamos, espero que el artículo os hay aparecido interesante. Nos leemos en la próxima.
La imagen de portada por cortesía de Flickr | Tiene derechos Creative Commons