Comando fuser, Localizamos procesos que usan un fichero.
Fuser es un comando muy poco conocido pero muy potente en Linux, identifica qué procesos están utilizando un fichero o carpeta determinada o un socket. De la misma forma podemos usarlo para matar esos mismos procesos.
1- La forma más simple de utilizarlo sería así:
m3t4g4m3@nexolinux ~ $ fuser .
/home/m3t4g4m3: 5663c
Cuyo PID nos muestra el proceso que muestra que mi propio usuario está usando ese directorio al encontrarme en él:
m3t4g4m3@nexolinux ~ $ ps -ef | grep 5663
m3t4g4m3 5663 5655 0 13:30 pts/2 00:00:00 -su
La «c» del proceso que muestra también nos aporta información, en este caso es «directorio actual» (Current directory)
También podemos ver esta nomenclatura:
c Directorio actual (current directory)
e Ejecutable activo (executable being run)
f Fichero abierto, omitido en el modo por defecto (open file)
F Fichero abierto para escritura, omitido en el modo por defecto (open file for writing)
r Directorio raíz (root directory)
m Fichero mapeado o biblioteca compartida (maped file or shared library)
2- Si ejecutamos fuser sobre un ejecutable como el servidor web nginx tenemos esto:
nexolinux sbin # fuser -v nginx USER PID ACCESS COMMAND /usr/sbin/nginx: root 6444 ...e. nginx www-data 6445 ...e. nginx www-data 6446 ...e. nginx www-data 6447 ...e. nginx www-data 6448 ...e. nginx
Lo ejecuto como root, pues como un usuario normal sólo mostraría de las rutas/procesos que tenga acceso. Le he añadido el valor «-v» para mostrar más información (verbose)
3- Si lo ejecutamos sobre un socket
nos dará esta valiosa información. Como por ejemplo en el puerto 80 que arranca el nginx
nexolinux sbin # fuser -v -n tcp 80 USER PID ACCESS COMMAND 80/tcp: root 6444 F.... nginx www-data 6445 F.... nginx www-data 6446 F.... nginx www-data 6447 F.... nginx www-data 6448 F.... nginx
4- Matar procesos que de un software determinado:
Tomando el argumento «-k» mataremos los procesos que usan un fichero o carpeta determinado, es una forma rápidisima y eficaz de hacer esta tarea con un sólo comando
nexolinux sbin # ps -ef | grep nginx | grep -v grep root 7112 1 0 14:21 ? 00:00:00 nginx: master process ./nginx www-data 7113 7112 0 14:21 ? 00:00:00 nginx: worker process www-data 7114 7112 0 14:21 ? 00:00:00 nginx: worker process www-data 7115 7112 0 14:21 ? 00:00:00 nginx: worker process www-data 7116 7112 0 14:21 ? 00:00:00 nginx: worker process
nexolinux sbin # fuser -v -k nginx USER PID ACCESS COMMAND /usr/sbin/nginx: root 7112 ...e. nginx www-data 7113 ...e. nginx www-data 7114 ...e. nginx www-data 7115 ...e. nginx www-data 7116 ...e. nginx
nexolinux sbin # ps -ef | grep nginx | grep -v grep nexolinux sbin #
5- Matar procesos selectivos de forma interactiva.
Pero imaginemos por un momento que una carpeta o binario donde vamos a ejecutarlo pueda ser usado por muchas aplicaciones o directamente lo desconozcamos, como medida de cautela, usamos el argumento «-i» para que nos pregunte si queremos o no matar un proceso determinado:
nexolinux sbin # fuser -v -i -k nginx USER PID ACCESS COMMAND /usr/sbin/nginx: root 7291 ...e. nginx www-data 7292 ...e. nginx www-data 7293 ...e. nginx www-data 7294 ...e. nginx www-data 7295 ...e. nginx Kill process 7291 ? (y/N) y Kill process 7292 ? (y/N) y Kill process 7293 ? (y/N) y Kill process 7294 ? (y/N) y Kill process 7295 ? (y/N)
¡Espero que os sea útil!
Fuente: www.thegeekstuff.com
Deja un comentario