GNU/Linux >> Tutoriels Linux >  >> Linux

5 exemples pratiques de commande Linux fuser

L'utilitaire de fusion sous Linux est un outil puissant. Comme son nom l'indique, il donne des informations sur l'utilisateur du fichier ou sur le processus qui utilise actuellement le fichier ou le répertoire.

Mais la fonctionnalité de l'unité de fusion ne se limite pas à donner des informations sur le processus. L'article explique comment utiliser l'utilitaire fuser avec 5 exemples pratiques.

1. Qui utilise un fichier ou un répertoire ?

C'est l'utilisation de base de la commande fuser. c'est-à-dire pour identifier les processus qui utilisent un fichier ou un répertoire particulier.

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

Dans l'exemple ci-dessus, nous avons utilisé l'utilitaire fuser pour trouver tous les processus utilisant le répertoire actuel "./" .

Nous voyons que la sortie se compose des ID de processus des processus utilisant fuser mais tous les PID sont suivis d'un caractère "c". Ceci indique le type d'accès. Le type d'accès peut être l'un des suivants :

  • c      répertoire actuel
  • l'      exécutable en cours d'exécution
  • f      ouvrir le fichier. f est omis dans le mode d'affichage par défaut
  • F      ouvrir le fichier pour l'écriture. F est omis dans le mode d'affichage par défaut
  • r      répertoire racine
  • m      fichier mappé ou bibliothèque partagée

Donc "c" dans la sortie signifierait que ces processus utilisent ce répertoire comme répertoire actuel.

Utilisez l'option -v pour afficher des informations détaillées dans la sortie :

$ 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

Nous voyons donc ci-dessus que l'exécution de fuser sur le répertoire courant donne les informations sur tous les processus qui utilisent ce répertoire.

2. fuser sur un exécutable

socket_serv est un exécutable de programme C qui est un serveur TCP qui écoute sur un port particulier.

$ ./socket_serv

Lorsque vous exécutez fuser sur cet exécutable, vous verrez ce qui suit :

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

Le spécificateur d'accès dans cet exemple est "e". C'est différent du spécificateur d'accès que nous avons vu dans les exemples ci-dessus. Il indique que le fichier est un exécutable.

3. Vérifier les processus à l'aide de sockets TCP/UDP

En utilisant fuser, nous pouvons également vérifier les processus utilisant les sockets TCP/UDP. Étant donné que l'exemple d'exécutable de programme C socket_serv indiqué ci-dessus s'exécute sur le port TCP 5000, utilisons l'utilitaire fuser sur ce socket.

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

Nous voyons donc que fuser donne toutes les informations détaillées du processus en cours d'exécution sur le port TCP 5000.

Outre les exemples ci-dessus, nous pouvons utiliser le drapeau "-m" avec cet utilitaire pour afficher les processus utilisant un système de fichiers monté comme une clé USB.

4. Arrêtez les processus qui utilisent un programme particulier

Jusqu'à présent, nous avons appris que fuser fournit des informations sur les processus utilisant des fichiers, des répertoires, des sockets, etc. Mais la puissance de cet utilitaire ne se limite pas à fournir uniquement des informations. Vous pouvez également arrêter des processus à l'aide de cet utilitaire.

Nous avons vu qu'un serveur TCP est en cours d'exécution sur le système qui accède au fichier binaire "socket_serv". Maintenant, essayons de tuer le processus en utilisant ce fichier binaire en utilisant fuser.

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

Notez que nous avons utilisé le drapeau '-k' pour tuer le processus en utilisant le fichier 'socket_serv'. Voyons voir sur l'autre terminal où le serveur fonctionnait.

$ ./socket_serv
Killed

Nous vous avons déjà expliqué comment tuer un processus en utilisant 4 méthodes différentes. Vous connaissez maintenant une autre méthode pour tuer un processus.

5. Arrêter interactivement les processus à l'aide de l'unité de fusion

Dans l'exemple ci-dessus, nous avons vu que le drapeau '-k' est utilisé lorsque nous voulons tuer les processus en utilisant un fichier particulier mais pour éviter de tuer des processus accidentellement, une autre option '-i' existe. Si nous utilisons cette option, alors 'fuser' fonctionnera en mode interactif et demandera avant de tuer le processus. Voir l'exemple ci-dessous.

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

Nous voyons donc qu'en utilisant '-k' et '-i', nous pouvons tuer de manière sélective les processus utilisant un fichier particulier.

Maintenant, c'est une utilisation très puissante de la commande 'fuser'.

Supposons que vous souhaitiez supprimer un fichier avec force mais qu'il soit utilisé par de nombreux processus, les processus ne vous laisseront pas supprimer le fichier. Dans ce cas, vous pouvez utiliser l'utilitaire fuser pour tuer tous les processus (ou processus sélectionnés) qui utilisent ce fichier.

$ 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

Notez que l'utilisation de '-k' envoie un signal SIGKILL aux processus utilisant ce fichier particulier. Nous pouvons utiliser l'option -SIGNAL pour envoyer n'importe quel autre signal. La liste des signaux supportés par fuser est donnée par :

$ 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

Par exemple, ce qui suit envoie SIGHUP au lieu de SIGKILL, lorsque vous utilisez l'option -k.

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

Linux
  1. 7 exemples pratiques de la commande cd sous Linux

  2. 5 exemples pratiques de la commande dd sous Linux

  3. 10 exemples pratiques de commandes Linux nm

  4. Exemples d'utilisation de la commande dmsetup sous Linux

  5. fuser Exemples de commandes sous Linux

12 exemples pratiques d'In Command sous Linux

Les 50 exemples pratiques de la commande SED sous Linux

15 exemples pratiques de commande Rsync sous Linux

5 exemples pratiques de la commande Tail sous Linux

commande echo sous Linux :7 exemples pratiques

Commande Ping pratique dans des exemples Linux