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.
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.