GNU/Linux >> Tutoriales Linux >  >> Linux

5 ejemplos prácticos de comandos de fuser de Linux

La utilidad fuser en Linux es una herramienta poderosa. Como sugiere el nombre, proporciona información sobre el usuario del archivo o el proceso que está utilizando actualmente el archivo o directorio.

Pero la funcionalidad del fusor no se limita solo a brindar información sobre el proceso. El artículo explica cómo usar la utilidad fuser con 5 ejemplos prácticos.

1. ¿Quién está usando un archivo o directorio?

Este es el uso básico del comando fuser. es decir, para identificar qué procesos están utilizando un archivo o directorio en particular.

$ fuser  .
./:                   3965c  4175c  4281c  4334c  4337c

En el ejemplo anterior, usamos la utilidad fuser para encontrar todos los procesos usando el directorio actual './' .

Vemos que la salida consta de ID de proceso de los procesos que usan fuser, pero todos los PID van seguidos de un carácter 'c'. Esto indica el tipo de acceso. El tipo de acceso puede ser cualquiera de los siguientes:

  • c      directorio actual
  • e      ejecutable en ejecución
  • f      archivo abierto. f se omite en el modo de visualización predeterminado
  • F      archivo abierto para escribir. F se omite en el modo de visualización predeterminado
  • r      directorio raíz
  • m      archivo de mapa o biblioteca compartida

Entonces, 'c' en la salida significaría que estos procesos están usando este directorio como su directorio actual.

Use la opción -v para mostrar información detallada en la salida:

$ fuser -v ./
           USER        PID ACCESS COMMAND
./:       himanshu   3965 ..c..    bash
          himanshu   4175 ..c..    gedit
          himanshu   4281 ..c..    bash
          himanshu   4334 ..c..  socket_serv
          himanshu   4337 ..c..    bash

Entonces vemos arriba que ejecutar fuser en el directorio actual brinda información sobre todos los procesos que están usando este directorio.

2. fusor en un ejecutable

socket_serv es un programa ejecutable en C que es un servidor TCP que escucha en un puerto en particular.

$ ./socket_serv

Cuando ejecute fuser en este ejecutable, verá lo siguiente:

$ fuser -v socket_serv
                     USER        PID    ACCESS       COMMAND
socket_serv:         himanshu   4334    ...e.        socket_serv

El especificador de acceso en este ejemplo es 'e'. Es diferente del especificador de acceso que vimos en los ejemplos anteriores. Transmite que el archivo es un ejecutable.

3. Comprobar procesos mediante sockets TCP/UDP

Usando fuser también podemos verificar los procesos usando sockets TCP/UDP. Dado que el ejecutable del programa C de muestra socket_serv mencionado anteriormente se ejecuta en el puerto TCP 5000, usemos la utilidad fuser en este socket.

$ fuser -v -n tcp 5000
                       USER        PID ACCESS COMMAND
5000/tcp:            himanshu   4334   F....  socket_serv

Entonces vemos que fuser brinda toda la información detallada del proceso que se ejecuta en el puerto TCP 5000.

Aparte de los ejemplos anteriores, podemos usar el indicador '-m' con esta utilidad para mostrar procesos usando un sistema de archivos montado como una unidad USB.

4. Matar procesos que usan un programa en particular

Hasta ahora aprendimos que fuser brinda información sobre los procesos usando archivos, directorios, sockets, etc. Pero el poder de esta utilidad no se limita a brindar información solamente. También puede eliminar procesos con esta utilidad.

Vimos que se está ejecutando un servidor TCP en el sistema que accede al archivo binario 'socket_serv'. Ahora, intentemos eliminar el proceso usando este archivo binario usando fuser.

$ fuser -v -k socket_serv
                      USER        PID ACCESS COMMAND
socket_serv:         himanshu   4334 ...e.   socket_serv

Tenga en cuenta que hemos usado el indicador '-k' para eliminar el proceso usando el archivo 'socket_serv'. Veamos en la otra terminal donde se estaba ejecutando el servidor.

$ ./socket_serv
Killed

Ya te explicamos cómo puedes matar un proceso usando 4 métodos diferentes. Ahora conoce un método más para matar un proceso.

5. Matar procesos de forma interactiva usando fuser

En el ejemplo anterior, vimos que la bandera '-k' se usa cuando queremos eliminar los procesos que usan un archivo en particular, pero para evitar la eliminación accidental de procesos, existe otra opción '-i'. Si usamos esta opción, 'fuser' se ejecutará en modo interactivo y preguntará antes de finalizar el proceso. Vea el ejemplo a continuación.

$ fuser -v -k -i socket_serv
                      USER        PID ACCESS COMMAND
socket_serv:         himanshu   5643 ...e.   socket_serv
Kill process 5643 ? (y/N) y

Entonces vemos que usando '-k' y '-i' podemos matar procesos selectivamente usando un archivo en particular.

Ahora, este es un uso muy poderoso del comando 'fuser'.

Suponga que desea eliminar un archivo a la fuerza, pero muchos procesos lo están utilizando, entonces los procesos no le permitirán eliminar el archivo. En ese caso, puede usar la utilidad fuser para eliminar todos los procesos (o procesos seleccionados) que usan ese archivo.

$ fuser -v -k -i ./
           USER        PID ACCESS COMMAND
./:       himanshu   3965 ..c..    bash
          himanshu   4175 ..c..    gedit
          himanshu   4281 ..c..    bash
          himanshu   4334 ..c..  socket_serv
          himanshu   4337 ..c..    bash
Kill process 3965 ? (y/N) y
Kill process 4175 ? (y/N) y
Kill process 4281 ? (y/N) y
Kill process 4334 ? (y/N) y
Kill process 4337 ? (y/N) y

Tenga en cuenta que el uso de '-k' envía una señal SIGKILL a los procesos que utilizan ese archivo en particular. Podemos usar la opción -SEÑAL para enviar cualquier otra señal. La lista de señales compatibles con fuser está dada por:

$ fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

Por ejemplo, lo siguiente envía SIGHUP en lugar de SIGKILL, cuando usa la opción -k.

$ fuser -v  -k -HUP -i ./

Linux
  1. Comando cp en Linux:7 ejemplos prácticos

  2. Comando de apagado de Linux:5 ejemplos prácticos

  3. 5 ejemplos prácticos del comando dd en Linux

  4. 10 ejemplos prácticos de comandos de Linux nm

  5. Ejemplos de uso del comando dmsetup en Linux

12 ejemplos prácticos de In Command en Linux

Los 50 Ejemplos Prácticos del Comando SED en Linux

15 ejemplos prácticos del comando Rsync en Linux

5 ejemplos prácticos de Tail Command en Linux

Comando echo en Linux:7 ejemplos prácticos

Ejemplos prácticos de comando ping en Linux