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

fuser Linux-Befehl mit Beispielen

Einführung

Der fuser Befehl (BENUTZER suchen ) ist ein Prozessverwaltungstool, das Prozesse anhand einer Datei, eines Verzeichnisses oder eines Sockets identifiziert. Zusätzlich fuser liefert Informationen über den Prozesseigentümer und den Zugriffstyp und beendet die betreffenden Prozesse.

In diesem Artikel wird erklärt, wie man fuser verwendet Linux-Befehl mit Beispielen.

Voraussetzungen

  • Ein System, auf dem Linux ausgeführt wird.
  • Zugang zum Terminal.
  • Sudo-Berechtigungen.

Linux-Fuser-Syntax

Die fuser Der Befehl hat einige mögliche Syntaxtypen:

  • Nur Optionen . Eine Aktion ausführen, die nicht spezifisch für ein Zielverzeichnis, eine Datei oder einen Socket ist.
fuser [option]
  • Verzeichnis, Datei oder Socket angeben . Suchen Sie alle Prozesse, die im Zielpfad ausgeführt werden, und listen Sie ihre PIDs auf.
fuser [file_or_directory_or_socket]
  • Optionen und Verzeichnis, Datei oder Socket angeben . Ändern Sie die Suche und führen Sie eine bestimmte Aktion für einen Prozess aus. Beenden Sie es beispielsweise.
fuser [options] [file_or_directory_or_socket]
  • Keine Optionen . Zeigt "Keine Prozessspezifikation angegeben" an Nachricht und der Hilfebildschirm.

Linux-Fixieroptionen

Die fuser Der Befehl funktioniert sogar, wenn Sie nur eine Datei, ein Verzeichnis oder einen Socket angeben. Die Verwendung von Optionen liefert jedoch detailliertere Ergebnisse.

Die folgende Tabelle zeigt die häufigsten fuser Optionen:

Befehl Beschreibung
-v , --verbose Zeigt die Felder USER, PID, ACCESS und COMMAND an, anstatt nur PIDs aufzulisten.
-n , --namespace Ändert den Namensraum vom Standardwert auf den neuen.
-m , --mount Gibt eine Datei an, die zu einer Datei gehört, und listet jeden Prozess auf, der auf Dateien in diesem Dateisystem zugreift.
-k , --kill Beendet Prozesse.
-i , --interactive Bittet den Benutzer um Bestätigung, bevor ein Vorgang beendet wird.
-[SIGNAL] Beendet Prozesse mit dem angegebenen Signal anstelle des Standardsignals (SIGKILL).
-l , --list-signals Listet alle Signalnamen auf, die von fuser verwendet werden können .
-a , --all Zeigt Dateien an, die auf dem Befehl angegeben sind, auf den mindestens ein Prozess zugegriffen hat.
-u , --user Fügt den Benutzernamen des Prozesseigentümers zu jeder PID hinzu.
-4 , --ipv4 Sucht nur nach IPv4-Sockets.
-6 , --ipv6 Nur nach IPv6-Sockets suchen.
-M , --ismountpoint Beendet Prozesse nur, wenn NAME einen Einhängepunkt angibt.
-w Nur Prozesse mit Schreibzugriff beenden.
-s , --silent Stellt einen unbeaufsichtigten Vorgang dar, der -u ignoriert und -v Optionen.
- Setzt alle Optionen zurück.

Beispiele für Linux-Fuser-Befehle

Der fuser ist das ultimative Linux-Tool zur Verwaltung von Prozessen. Um das Tool optimal zu nutzen, lesen Sie die folgenden Abschnitte, um allgemeine fuser zu sehen Beispiele.

Prozesse in einem Verzeichnis suchen

Das grundlegende fuser Aufgabe ist es, zu identifizieren, welche Prozesse Dateien in einem bestimmten Verzeichnis verwenden. Die Syntax lautet:

fuser [directory]

Um beispielsweise die Prozesse aufzulisten, die im aktuellen Verzeichnis ausgeführt werden, verwenden Sie den Punkt (. ) :

fuser .

Die Ausgabe listet die PIDs aller Prozesse auf, die auf das aktuelle Verzeichnis zugreifen.

Das Terminal zeigt die Startseite an Ordner als den aktuellen. Daher wird bei Verwendung dieses Ordnerpfads dieselbe Ausgabe gedruckt:

fuser /home/sara

Um eine besser lesbare Ausgabe zu drucken, verwenden Sie -v (ausführliche) Option vor dem Verzeichnis:

fuser -v .

Derselbe Befehl funktioniert in jedem anderen Verzeichnis. Identifizieren Sie beispielsweise Prozesse in WhatIsThis Verzeichnis im Home platziert Ordner mit:

sudo fuser -v /home/sara/WhatIsThis

Hinweis: Mit sudo gibt mehr Prozesse aus, einschließlich derjenigen, die root gehören.

Der fuser -v . Die Ausgabe ist detailliert und enthält die folgenden Spalten:

  • BENUTZER - Der Prozesseigner.
  • PID - Die Prozess-ID.
  • ZUGANG - Der Zugriffstyp.
  • BEFEHL - Der Befehl, der den Prozess ausführt.

In den obigen Beispielen zeigt die Zugriffsspalte das Symbol c , die das aktuelle Verzeichnis darstellt. Weitere Zugriffsarten und Symbole sind:

  • e - Ausführbare Datei wird ausgeführt.
  • f - Datei öffnen.
  • F - Datei zum Schreiben geöffnet.
  • r - Stammverzeichnis.
  • m - Mmap-Datei oder gemeinsam genutzte Bibliothek.

Prozesse auflisten, die eine Datei verwenden

Finden Sie Prozesse, die auf eine Datei zugreifen, indem Sie fuser ausführen mit einem Pfad zum Dateinamen.

fuser -v [filename]

Sehen Sie sich beispielsweise Prozesse an, die den this_is_a_new_text verwenden Datei auf der Startseite Verzeichnis mit:

sudo fuser -v /home/sara/this_is_a_new_text

Die Ausgabe zeigt:

  • Root als Prozesseigentümer.
  • PID des Prozesses.
  • Der Zugriffstyp f stellt eine geöffnete Datei dar.
  • Der Befehl less Zugriff auf die Datei.

Der fuser Der Befehl funktioniert auch mit einer ausführbaren Datei wie PYTHON3 im bin-Verzeichnis:

 sudo fuser -v /bin/python3

Der Befehl gibt aus:

  • Root als Prozesseigentümer.
  • PID des Prozesses.
  • Das Zugriffssymbol e , was bedeutet, dass es sich bei der Datei um eine ausführbare Datei handelt.
  • Der Befehl networkd-dispat Ausführen der Datei.

Prozesse mit einem Socket lokalisieren

Um Prozesse zu finden, die TCP- und UDP-Sockets verwenden, verwenden Sie:

fuser -v -n [socket_type] [port]

Oder:

fuser -v [port]/[socket_type]

Der -n flag wählt den entsprechenden Socket-Typ (TCP oder UDP) als Namespace aus. Identifizieren Sie beispielsweise den Prozess, der auf TCP-Port 631 läuft, mit:

sudo fuser -v -n tcp 631

Die kürzere Syntax ist:

sudo fuser -v 631/tcp

In beiden Fällen gibt der Befehl die PID des Prozesses aus, F als Zugriffstyp und cupsd Befehl.

Prozess suchen, der auf ein Dateisystem zugreift

Verwenden Sie den -m Flag mit fuser, um alle Prozesse zu identifizieren, die auf ein Dateisystem zugreifen, indem sie auf eine Datei abzielen, die zu diesem System gehört.

Zum Beispiel, um alle Dateien und Prozesse aufzulisten, die in dem Dateisystem laufen, für das der this_is_a_new_text Datei gehört, geben Sie ein:

sudo fuser -v -m this_is_a_new_text

Kill-Prozesse

Der Fixierbefehl mit dem -k Flag beendet Prozesse in einem ausgewählten Pfad. Beispiel:Ein Prozess führt this_is_a_new_text aus Datei auf der Startseite Verzeichnis. Die Datei wird mit dem Befehl less.

geöffnet

Verwenden Sie fuser -k um nur den Prozess zu beenden, der auf diese Datei zugreift, nicht jeden Prozess, der die Startseite verwendet Verzeichnis:

sudo fuser -v -k /home/sara/this_is_a_new_text

Das Terminal druckt nach keinem der beiden Befehle etwas. Außerdem das Targeting einer Datei mit fuser druckt auch keine Ergebnisse. Das bedeutet, dass der Prozess beendet wird:

sudo fuser -v /home/sara/this_is_a_new_text

Um dies zu bestätigen, überprüfen Sie den this_is_a_new_text zuvor mit less geöffnete Datei :

Die Ausgabe zeigt die Meldung killed und eine neue leere Terminalzeile, die bestätigt, dass der Prozess beendet wurde.

Prozesse interaktiv beenden

Das Flag -k beendet jeden Prozess, der eine bestimmte Datei verwendet. Wenn der Namespace jedoch ein Verzeichnis ist, fuser -k beendet alle Prozesse, die auf dieses Verzeichnis zugreifen. Führen Sie diesen Befehl in der Startseite aus ohne Angabe der Datei, beendet den Prozess, auf dem das Betriebssystem ausgeführt wird, und fährt das System herunter .

Um Fehler zu vermeiden, führen Sie fuser aus im interaktiven Modus mit -ki Möglichkeit. Beenden Sie Prozesse interaktiv in der Startseite Verzeichnis mit:

fuser -ki .

Der Befehl fragt jedes Mal nach einer Bestätigung, bevor er einen Prozess beendet. Drücken Sie daher y um den Prozess abzubrechen und mit dem nächsten fortzufahren, oder wählen Sie N um zum nächsten Vorgang zu springen.

Sende ein Signal

Beim Ausführen von fuser mit -k , der SIGKILL Signal wird an einen Prozess gesendet. Um jedoch den normalen fuser -k zu unterbrechen Ausführung und Beendigung von Prozessen mit einem anderen Signal, schließen Sie den -[SIGNAL] ein Flagge.

fuser -k -[SIGNAL] [file_or_directory_or_socket]

Um alle Signale aufzulisten, die fuser bekannt sind , ausführen:

fuser -l

Die Ausgabe zeigt 31 Signale, die fuser Kann benutzen. Daher beim Ausführen von fuser -k -[SIGNAL] , geben Sie das Signal nach Name oder Nummer (-1 bis -31) an. Um einem Prozess beispielsweise ein kontrolliertes Herunterfahren zu ermöglichen, verwenden Sie -TERM oder -5 als -[SIGNAL] .

Um beispielsweise den Prozess über den TCP-Port 631 mit TERM zu beenden signalisieren, ausführen:

sudo fuser -ki -TERM -n tcp 631

Eine weitere Option ist die Verwendung von -5 als -[SIGNAL] und 631/TCP als Portname:

sudo fuser -ki -5 631/TCP

Das Ergebnis ist in beiden Fällen das gleiche. Das heißt, mit TERM ermöglicht den Soft-Exit und den -ki flag bittet um Bestätigung, wodurch Fehlermöglichkeiten reduziert werden.

Um die Funktionen und numerischen Werte anderer Standard-Linux-Signale zu überprüfen, führen Sie Folgendes aus:

man 7 signal

Fazit

Nachdem Sie dieses Tutorial gelesen haben, wissen Sie, wie Sie einen Prozess mithilfe einer Datei, eines Verzeichnisses oder eines Sockets finden oder Prozesse mit fuser beenden .

Lernen Sie als Nächstes andere Methoden zum Beenden von Prozessen sowie das Auflisten von Prozessen unter Linux kennen.


Linux
  1. wc Linux-Befehl mit Beispielen

  2. Linux Tee-Befehl mit Beispielen

  3. Linux-Kopfbefehl mit Beispielen

  4. JQ-Befehl in Linux mit Beispielen

  5. fuser-Befehlsbeispiele in Linux

Tr-Befehl in Linux mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Linux-CD-Befehl mit Beispielen

Linux-Uhrbefehl mit Beispielen

Linux-PS-Befehl mit Beispielen

Linux-IP-Befehl mit Beispielen