GNU/Linux >> LINUX-Kenntnisse >  >> Linux

5 praktische Linux-Fuser-Befehlsbeispiele

Das Fuser-Dienstprogramm in Linux ist ein leistungsstarkes Tool. Wie der Name schon sagt, gibt es Informationen über den Dateibenutzer oder den Prozess, der gerade die Datei oder das Verzeichnis verwendet.

Die Fixierfunktion beschränkt sich jedoch nicht nur auf die Bereitstellung von Informationen über den Prozess. Der Artikel erläutert die Verwendung des Fixierer-Dienstprogramms anhand von 5 praktischen Beispielen.

1. Wer verwendet eine Datei oder ein Verzeichnis?

Dies ist die grundlegende Verwendung des Fixierbefehls. d.h. um zu identifizieren, welche Prozesse eine bestimmte Datei oder ein bestimmtes Verzeichnis verwenden.

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

Im obigen Beispiel haben wir das Fuser-Dienstprogramm verwendet, um alle Prozesse zu finden, die das aktuelle Verzeichnis „./“ .

verwenden

Wir sehen, dass die Ausgabe aus Prozess-IDs der Prozesse besteht, die Fixierer verwenden, aber allen PIDs folgt ein Zeichen „c“. Dies zeigt die Art des Zugriffs an. Der Zugriffstyp kann einer der folgenden sein:

  • c      aktuelles Verzeichnis
  • e      ausgeführte ausführbare Datei
  • f      Datei öffnen. f wird im Standardanzeigemodus weggelassen
  • F      Datei zum Schreiben öffnen. F wird im Standardanzeigemodus weggelassen
  • r      Stammverzeichnis
  • m      Mmap-Datei oder gemeinsam genutzte Bibliothek

„c“ in der Ausgabe würde also bedeuten, dass diese Prozesse dieses Verzeichnis als ihr aktuelles Verzeichnis verwenden.

Verwenden Sie die Option -v, um detaillierte Informationen in der Ausgabe anzuzeigen:

$ 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

Wir sehen also oben, dass das Ausführen von fuser im aktuellen Verzeichnis Informationen über alle Prozesse liefert, die dieses Verzeichnis verwenden.

2. fuser auf einer ausführbaren Datei

socket_serv ist ein ausführbares C-Programm, das ein TCP-Server ist, der auf einem bestimmten Port lauscht.

$ ./socket_serv

Wenn Sie fuser auf dieser ausführbaren Datei ausführen, sehen Sie Folgendes:

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

Der Zugriffsbezeichner in diesem Beispiel ist „e“. Es unterscheidet sich von dem Zugriffsbezeichner, den wir in den obigen Beispielen gesehen haben. Es vermittelt, dass die Datei eine ausführbare Datei ist.

3. Prozesse mit TCP/UDP-Sockets prüfen

Unter Verwendung von fuser können wir auch die Prozesse überprüfen, die TCP/UDP-Sockets verwenden. Da die oben angegebene ausführbare Beispiel-C-Programmdatei socket_serv auf TCP-Port 5000 ausgeführt wird, können wir das Fuser-Dienstprogramm auf diesem Socket verwenden.

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

Wir sehen also, dass der Fuser alle detaillierten Informationen über den Prozess liefert, der auf TCP-Port 5000 läuft.

Abgesehen von den obigen Beispielen können wir mit diesem Dienstprogramm das Flag „-m“ verwenden, um Prozesse anzuzeigen, die ein gemountetes Dateisystem wie ein USB-Laufwerk verwenden.

4. Prozesse beenden, die ein bestimmtes Programm verwenden

Bis jetzt haben wir gelernt, dass fuser Informationen über die Prozesse bereitstellt, die Dateien, Verzeichnisse, Sockets usw. verwenden. Die Leistungsfähigkeit dieses Dienstprogramms beschränkt sich jedoch nicht nur auf die Bereitstellung von Informationen. Sie können mit diesem Dienstprogramm auch Prozesse beenden.

Wir haben gesehen, dass auf dem System ein TCP-Server läuft, der auf die Binärdatei ‚socket_serv‘ zugreift. Lassen Sie uns nun versuchen, den Prozess mithilfe dieser Binärdatei mithilfe von fuser zu beenden.

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

Beachten Sie, dass wir das Flag „-k“ verwendet haben, um den Prozess mit der Datei „socket_serv“ zu beenden. Lassen Sie uns auf dem anderen Terminal sehen, wo der Server lief.

$ ./socket_serv
Killed

Wir haben Ihnen bereits erklärt, wie Sie einen Prozess mit 4 verschiedenen Methoden beenden können. Jetzt kennen Sie eine weitere Methode, um einen Prozess zu beenden.

5. Beenden Sie Prozesse interaktiv mit dem Fixierer

Im obigen Beispiel haben wir gesehen, dass das Flag „-k“ verwendet wird, wenn wir die Prozesse mit einer bestimmten Datei beenden möchten, aber um das versehentliche Beenden von Prozessen zu vermeiden, gibt es eine andere Option „-i“. Wenn wir diese Option verwenden, wird „Fuser“ im interaktiven Modus ausgeführt und fragt, bevor der Prozess beendet wird. Siehe das Beispiel unten.

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

Wir sehen also, dass wir mit „-k“ und „-i“ Prozesse mit einer bestimmten Datei selektiv beenden können.

Nun, dies ist eine sehr mächtige Anwendung des Befehls „fuser“.

Angenommen, Sie möchten eine Datei zwangsweise löschen, aber sie wird von vielen Prozessen verwendet, dann lassen die Prozesse Sie die Datei nicht löschen. In diesem Fall können Sie das Fuser-Dienstprogramm verwenden, um alle Prozesse (oder ausgewählte Prozesse) zu beenden, die diese Datei verwenden.

$ 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

Beachten Sie, dass die Verwendung von „-k“ ein SIGKILL-Signal an die Prozesse sendet, die diese bestimmte Datei verwenden. Wir können die Option -SIGNAL verwenden, um jedes andere Signal zu senden. Die Liste der vom Fixierer unterstützten Signale ist gegeben durch:

$ 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

Folgendes sendet beispielsweise SIGHUP statt SIGKILL, wenn Sie die Option -k verwenden.

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

Linux
  1. 10 praktische Beispiele für die Verwendung des scp-Befehls

  2. cp-Befehl unter Linux:7 praktische Beispiele

  3. 10 praktische Beispiele für Linux-nm-Befehle

  4. Beispiele für die Verwendung des Befehls dmsetup unter Linux

  5. fuser-Befehlsbeispiele in Linux

12 praktische Beispiele für In Command unter Linux

Die 50 praktischen Beispiele des SED-Befehls in Linux

15 Praktische Beispiele für den Rsync-Befehl unter Linux

5 praktische Beispiele für Tail-Befehle unter Linux

Echo-Befehl unter Linux:7 praktische Beispiele

Praktischer Ping-Befehl in Linux-Beispielen