Introducción
El comando fuser
es una utilidad de Linux diseñada para encontrar qué proceso está utilizando un archivo, directorio o socket dado. También proporciona información sobre el usuario que está ejecutando ese proceso y el tipo de acceso.
Cómo Usar la Utilidad fuser
Puede revisar la pagina del manual de fuser
para obtener una descripción general de todas las opciones para usar con fuser
. También puede ejecutar fuser
por sí solo sin ninguna opción para obtener una descripción general de la sintaxis de fuser
:
- fuser
OutputNo process specification given
Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
Cómo Ver los Procesos en Ejecución en un Directorio
fuser
también se puede usar con la opción -v
, que ejecuta la herramienta en modo detallado. La opción detallada se utiliza para producir más salida para que el usuario pueda observar qué está haciendo fuser
. Ejecute fuser
en el directorio actual, .
, e incluya la opción -v
:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
En este caso, el único proceso en ejecución en este directorio es el shell interactivo bash
desde el que estás ejecutando comandos en este momento.
Cuando se ejecuta en modo verbose, la utilidad fuser
proporciona información sobre el USUARIO
, PID
, ACCESO
y COMANDO
de un proceso. El carácter c
bajo ACCESO
muestra el tipo de acceso, en este caso significa el directorio c actual. Hay otros tipos de acceso, como ejecutable en ejecución, directorio raíz, archivo abierto f y archivo mapeado o biblioteca compartida m.
Cómo encontrar procesos que utilizan sockets de red
También puede ser necesario buscar procesos que utilicen sockets TCP y UDP. Para demostrar este ejemplo, primero usarás nc
para crear un escuchador TCP en el puerto 8002, de modo que haya un proceso en ejecución que puedas observar:
- nc -l -p 8002
Esto bloqueará el terminal mientras esté en ejecución. En otra ventana del terminal, usa fuser
para encontrar el proceso en ejecución en el puerto TCP 8002 con la opción -n
:
- fuser -v -n tcp 8002
Output USER PID ACCESS COMMAND
8002/tcp: sammy 17985 F.... nc
Nota: De forma predeterminada, la herramienta fuser
comprobará tanto los sockets IPv4 como IPv6, pero puedes cambiar esto con las opciones -4
y -6
para verificar solo las conexiones IPv4 o solo las conexiones IPv6, respectivamente.
Este resultado muestra que el ID de proceso (PID) del proceso que utiliza netcat es 17985 y el comando utilizado para iniciarlo es ‘nc’. El ID de proceso (PID) se puede utilizar de muchas formas, incluyendo para detener o matar un proceso en ejecución. Puedes aprender más sobre la gestión de procesos leyendo Cómo utilizar ps, kill y nice para gestionar procesos en Linux. También puedes utilizar fuser
en sí mismo para matar procesos en ejecución en puertos específicos utilizando la bandera -k
:
- fuser -k 8002/tcp
Output8002/tcp: 18056
Si regresas a tu primera ventana de terminal, notarás que el programa nc
ha sido detenido y ha regresado al shell.
La utilidad fuser también puede utilizarse para enviar señales específicas a un proceso. Cuando se utiliza con la opción -k, el comando fuser envía la señal KILL a un proceso. Hay muchas otras señales que se pueden enviar a un proceso en ejecución específico. Puedes listarlas con fuser -l
:
- fuser -l
OutputHUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
Conclusión
En este artículo, aprendiste algunos ejemplos de uso de fuser
para monitorear puertos y directorios en uso en un sistema Linux. fuser
puede ser particularmente útil cuando estás tratando de entender qué procesos desconocidos pueden estar en ejecución en tu sistema.
A continuación, es posible que desees aprender cómo usar netstat
y du
para monitorizar otros recursos del servidor.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command