So finden Sie heraus, wer eine Datei unter Linux verwendet
In diesem Artikel erklären wir, wie Sie unter Linux herausfinden, wer eine bestimmte Datei verwendet. Dadurch können Sie den Systembenutzer oder Prozess ermitteln, der eine geöffnete Datei verwendet.
Mit dem Befehl lsof können wir feststellen, ob jemand eine Datei verwendet und wenn ja, wer. Es liest den Kernel-Speicher bei der Suche nach offenen Dateien und hilft Ihnen, alle geöffneten Dateien aufzulisten. In diesem Fall kann eine geöffnete Datei eine reguläre Datei, ein Verzeichnis, eine Block-Spezialdatei, eine Zeichen-Spezialdatei, ein Stream, eine Netzwerkdatei und viele andere sein – denn unter Linux ist alles eine Datei.
Lsof wird in einem Dateisystem verwendet, um zu identifizieren, wer Dateien in diesem Dateisystem verwendet. Sie können den lsof-Befehl auf dem Linux-Dateisystem ausführen. Die Ausgabe identifiziert den Eigentümer und Prozessinformationen für Prozesse, die die Datei verwenden, wie in der folgenden Ausgabe gezeigt.
lsof /dev/null
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1480 tecmint 0r CHR 1,3 0t0 6 /dev/null
sh 1501 tecmint 0r CHR 1,3 0t0 6 /dev/null
sh 1501 tecmint 1w CHR 1,3 0t0 6 /dev/null
dbus-daem 1530 tecmint 0u CHR 1,3 0t0 6 /dev/null
xfce4-ses 1603 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfce4-ses 1603 tecmint 1w CHR 1,3 0t0 6 /dev/null
at-spi-bu 1604 tecmint 0r CHR 1,3 0t0 6 /dev/null
dbus-daem 1609 tecmint 0u CHR 1,3 0t0 6 /dev/null
at-spi2-r 1611 tecmint 0u CHR 1,3 0t0 6 /dev/null
xfconfd 1615 tecmint 0u CHR 1,3 0t0 6 /dev/null
xfwm4 1624 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfwm4 1624 tecmint 1w CHR 1,3 0t0 6 /dev/null
xfce4-pan 1628 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfce4-pan 1628 tecmint 1w CHR 1,3 0t0 6 /dev/null
Thunar 1630 tecmint 0r CHR 1,3 0t0 6 /dev/null
Thunar 1630 tecmint 1w CHR 1,3 0t0 6 /dev/null
xfdesktop 1632 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfdesktop 1632 tecmint 1w CHR 1,3 0t0 6 /dev/null
....
Um benutzerspezifische geöffnete Dateien aufzulisten, führen Sie den folgenden Befehl aus und ersetzen Sie tecmint
durch den tatsächlichen Benutzernamen.
lsof -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1480 tecmint cwd DIR 8,3 4096 2 /
systemd 1480 tecmint rtd DIR 8,3 4096 2 /
systemd 1480 tecmint txt REG 8,3 1595792 3147496 /lib/systemd/systemd
systemd 1480 tecmint mem REG 8,3 1700792 3150525 /lib/x86_64-linux-gnu/libm-2.27.so
systemd 1480 tecmint mem REG 8,3 121016 3146329 /lib/x86_64-linux-gnu/libudev.so.1.6.9
systemd 1480 tecmint mem REG 8,3 84032 3150503 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0
systemd 1480 tecmint mem REG 8,3 43304 3150514 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1
systemd 1480 tecmint mem REG 8,3 34872 2497970 /usr/lib/x86_64-linux-gnu/libargon2.so.0
systemd 1480 tecmint mem REG 8,3 432640 3150484 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
systemd 1480 tecmint mem REG 8,3 18680 3150450 /lib/x86_64-linux-gnu/libattr.so.1.1.0
systemd 1480 tecmint mem REG 8,3 18712 3150465 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
systemd 1480 tecmint mem REG 8,3 27112 3150489 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd 1480 tecmint mem REG 8,3 14560 3150485 /lib/x86_64-linux-gnu/libdl-2.27.so
...
Eine weitere wichtige Verwendung von lsof besteht darin, den Prozess herauszufinden, der einen bestimmten Port überwacht. Identifizieren Sie beispielsweise den Prozess, der Port 80 überwacht, mit dem folgenden Befehl.
sudo lsof -i TCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 903 root 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1320 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1481 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1482 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1493 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1763 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2027 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2029 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2044 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 3199 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 3201 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
Hinweis: Da lsof den Kernel-Speicher bei der Suche nach offenen Dateien liest, können schnelle Änderungen im Kernel-Speicher zu unvorhersehbaren Ausgaben führen. Dies ist einer der größten Nachteile der Verwendung des Befehls lsof.
Weitere Informationen finden Sie auf der Manpage lsof:
man lsof
Das ist alles! In diesem Artikel haben wir erklärt, wie Sie herausfinden, wer eine bestimmte Datei unter Linux verwendet. Wir haben gezeigt, wie Sie mithilfe einer geöffneten Datei den Eigentümer und Prozessinformationen für Prozesse identifizieren. Verwenden Sie das unten stehende Feedback-Formular, um uns für Fragen oder Kommentare zu erreichen.