Wie Sie mit lsof geöffnete, aber gelöschte Dateien finden und entfernen/wiederherstellen

Dieser Artikel erklärt Ihnen ausführlich, wie Sie gelöschte lsof-Dateien finden, entfernen und wiederherstellen können.

Wenn uns der Speicherplatz ausgeht, durchsuchen wir häufig das Dateisystem unseres Linux-Computers nach bestimmten Dateien, die wir nicht mehr benötigen und löschen sie. Leider ist das Löschen von Dateien möglicherweise nicht erfolgreich, wenn es aktive Prozesse gibt, die auf diese Dateien verweisen. In dieser Situation können wir jeden Prozess anhalten, der einen offenen Verweis aufrechterhält, bevor wir die Dateien entfernen.

Dies könnte jedoch auch problematisch sein. Einige Programme sollten zum Beispiel nicht während der Arbeitszeit beendet werden. Als Lösung bietet dieser Artikel eine umfassende Anleitung, die alle notwendigen Schritte enthält, um gelöschte Dateien mit lsof zu finden, zu entfernen und wiederherzustellen.

Teil 1. Was ist der lsof Befehl?

lsof Befehl

Der lsof Befehl in Unix- und Linux-Systemen steht für "List Open Files". Es ist ein leistungsstarkes Tool, das Informationen über Dateien liefert, die von aktiven Prozessen auf einem System geöffnet sind. Der lsof Befehl liefert Informationen über geöffnete Dateien, die von Prozessen verwendet werden, wie z.B. Netzwerk-Sockets, reguläre Dateien, Verzeichnisse, spezielle Blockdateien und Dateien mit Sonderzeichen.

  • Die Syntax des lsof Befehls lautet wie folgt:

lsof [options]

Die mit dem lsof Befehl verwendeten Optionen bestimmen die Informationen, die angezeigt werden und das Format, in dem sie dargestellt werden.

Der lsof Befehl verfügt über zahlreiche Optionen. In der folgenden Tabelle finden Sie die am häufigsten verwendeten Argumente.

Option
Beschreibung
lsof Listet alle geöffneten Dateien auf
-b Versteckt Kernel-Blöcke
/ [file system] / Zeigt offene Dateien in einem angegebenen Dateisystem an
/dev/tty* Zeigt Dateien an, die mit dem Terminal verbunden sind
-u [username] Druckt offene Dateien, die einem bestimmten Benutzer gehören
-u ^[username] Druckt offene Dateien, die allen Benutzern gehören, außer einem bestimmten Benutzer
-c [process] Listet alle Dateien auf, die von einem bestimmten Prozess verwendet werden
-p [process ID] Zeigt alle offenen Dateien an, die mit einer bestimmten Prozess-ID verknüpft sind
-p ^[process ID] Zeigt offene Dateien, die von allen anderen Prozess-IDs verwendet werden
-R Listet die IDs übergeordneter Prozesse auf
+D [directory path] Druckt alle geöffneten Dateien in einem Verzeichnis
-i Zeigt alle von Netzwerkverbindungen verwendeten Dateien an
-i [IP version number] Filtert Dateien basierend auf ihrer IP-Version
- i [udp or tcp] Filtert geöffnete Dateien anhand des Verbindungstyps (TCP oder UDP)
-i :[port number] Findet Prozesse, die auf einem bestimmten Port laufen
-i :[port range] Findet Prozesse, die auf einer Reihe von Ports laufen
-t [file name] Listet Prozess-IDs auf, die auf eine bestimmte Datei zugegriffen haben
# kill -9 'lsof -t -u [user]' Beendet alle Prozesse, die einem Benutzer gehören
-d mem Zeigt alle Dateien an, die dem Speicher zugeordnet sind
[path] | grep deleted Druckt gesperrte gelöschte Dateien
man Öffnet die Handbuchseite

Teil 2. Wie findet und entfernt man Dateien, die geöffnet sind, aber mit lsof gelöscht wurden?

Lassen Sie uns zunächst das Konzept begreifen. Eine Linux-Datei ist ein Link zu einem Inode, der aus allen Dateieigenschaften der Datenblöcke auf der Festplatte besteht, die den Inhalt der Datei ausmachen. Wenn Sie eine Datei entfernen, entfernen Sie den Link zu ihrem Inode, aber nicht den Inode selbst; andere Prozesse können ihn weiterhin verwenden. Erst wenn diese beendet sind und alle Links entfernt wurden, werden ein Inode und die Datenblöcke, auf die er zeigt, zum Schreiben freigegeben.

Auch wenn die Datei in der Verzeichnisliste zu verschwinden scheint, befinden sich die Daten an anderer Stelle, wenn ein Prozess sie noch geöffnet hat.

Das Verzeichnis/proc kommt im Pseudo-Dateisystem des Linux-Prozesses ins Spiel. Jeder Prozess auf dem System hat ein Verzeichnis mit seinem Namen, das viele Dinge enthält, einschließlich eines Unterverzeichnisses fd (file descriptor) mit Links zu allen Dateien, die der Prozess geöffnet hat. Auch wenn eine Datei aus dem Dateisystem gelöscht wurde, ist eine Kopie der Daten noch vorhanden:

Schritt 1. Um festzustellen, wohin Sie gehen müssen, ermitteln Sie die Prozess-ID und den Dateideskriptor des Prozesses, der die Datei geöffnet hat, indem Sie lsof verwenden. Sobald Sie diese Informationen von lsof erhalten haben, kopieren Sie die Daten aus /proc.

  • Erstellen Sie eine Textdatei:

$ man lsof | col -b > myfile

Schritt 2. Prüfen Sie dann den Inhalt der Datei, die Sie gerade erstellt haben:

  • Der Befehl less sollte eine Klartextversion der umfangreichen Manpage von lsof anzeigen.

$ less myfile

Schritt 3. Um den Befehl less anzuhalten, drücken Sie Strg-Z.

  • Überprüfen Sie, ob Ihre Datei am Prompt der Shell noch vorhanden ist:

$ ls -l myfile
-rw-r--r-- 1 jimbo jimbo 114383 Oct 31 16:14 myfile
$ stat myfile
File: `myfile'
Size: 114383 Blocks: 232 IO Block: 4096 regular file
Device: 341h/833d Inode: 1276722 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1010/ jimbo) Gid: ( 1010/ jimbo)
Access: 2006-10-31 16:15:08.423715488 -0400
Modify: 2006-10-31 16:14:52.684417746 -0400
Change: 2006-10-31 16:14:52.684417746 -0400

Schritt 4. Bitte entfernen Sie sie.

  • Dieses Mal ist sie nicht mehr da.

$ rm myfile
$ ls -l myfile
ls: myfile: No such file or directory
$ stat myfile
stat: cannot stat `myfile': No such file or directory
$

An dieser Stelle sollten Sie nicht zulassen, dass der Prozess der weiteren Verwendung der Datei beendet wird, da dies dazu führt, dass die Datei für immer verloren geht.

Teil 3. Wie stellt man gelöschte Dateien mit lsof wieder her?

Nachdem wir die gelöschten geöffneten Dateien gefunden und entfernt haben, werden wir sie jetzt mit lsof wiederherstellen. Wenn eine Datei gelöscht wurde, aber noch von einem Prozess geöffnet ist, kann lsof Informationen über die Datei anzeigen, einschließlich ihres Dateideskriptors, der Prozess-ID und des vollständigen Pfads.

Schritt 1. Werfen Sie einen Blick darauf, was lsof dazu zu sagen hat:

$ lsof | grep myfile
less 4158 jimbo 4r REG 3,65 114383 1276722 /home/jimbo/myfile (gelöscht)

Die erste Spalte zeigt den mit dem Prozess verknüpften Befehlsnamen, die zweite Spalte enthält die Prozess-ID und die vierte Spalte enthält den Dateideskriptor (das "r" zeigt an, dass es sich um eine reguläre Datei handelt). Sie wissen, dass der Prozess 4158 die Datei geöffnet und den Dateideskriptor 4 hat. Das ist alles, was Sie wissen müssen, um es aus /proc zu kopieren.

Schritt 2. Da Sie die Datei wiederherstellen, könnten Sie denken, dass die Verwendung des Flags -a bei cp das Richtige ist - aber das ist NICHT richtig.

  • Anstatt die wörtlichen Daten der Datei zu kopieren, kopieren Sie einen symbolischen Link zu der Datei, wie sie zuvor in ihrem ursprünglichen Verzeichnis aufgeführt war:

$ ls -l /proc/4158/fd/4
lr-x------ 1 jimbo jimbo 64 Oct 31 16:18 /proc/4158/fd/4 -> /home/jimbo/myfile (deleted)
$ cp -a /proc/4158/fd/4 myfile.wrong
$ ls -l myfile.wrong
lrwxr-xr-x 1 jimbo jimbo 24 Oct 31 16:22 myfile.wrong -> /home/jimbo/myfile (deleted)
$ file myfile.wrong
myfile.wrong: broken symbolic link to `/home/jimbo/myfile (deleted)'
$ file /proc/4158/fd/4
/proc/4158/fd/4: broken symbolic link to `/home/jimbo/myfile (deleted)'

  • Stattdessen reicht ein einfaches cp aus:

$ cp /proc/4158/fd/4 myfile.saved

  • Überprüfen Sie zum Schluss noch einmal, ob Sie alles richtig gemacht haben:

$ ls -l myfile.saved
-rw-r--r-- 1 jimbo jimbo 114383 Oct 31 16:25 myfile.saved
$ man lsof | col -b > myfile.new
$ cmp myfile.saved myfile.new

Teil 4. Eine einfache Alternative zu lsof zur Wiederherstellung gelöschter Dateien unter Linux

Wenn Sie nach einer benutzerfreundlichen Alternative zu lsof suchen, um gelöschte Dateien wiederherzustellen, sollten Sie eine Linux-Dateiwiederherstellungssoftware wie Wondershare Recoverit verwenden. Im Gegensatz zu lsof, einem Tool für die Befehlszeile, verfügt Recoverit über eine einfache grafische Oberfläche (GUI), die es auch für Personen mit wenig oder gar keiner technischen Erfahrung einfach zu bedienen macht. Mit Recoverit können Sie die Festplatte Ihres Computers schnell scannen und gelöschte Dateien mit nur wenigen Klicks wiederherstellen.

Wondershare Recoverit - Ihre sichere und zuverlässige Linux-Wiederherstellungssoftware

5.481.435 Personen haben das Tool bereits heruntergeladen.

Stellt verlorene oder gelöschte Dokumente, Fotos, Videos, Musik, E-Mails und über 1.000 weitere Dateitypen effektiv, sicher und vollständig wieder her.

Kompatibel mit allen gängigen Linux-Distributionen, einschließlich Ubuntu, Linux Mint, Debian, Fedora, Solus, Opensuse, Manjaro, etc.

Hilft bei mehr als 500 Datenverlustszenarien, wie z.B. Löschen, Formatieren der Festplatte, Absturz des Betriebssystems, Stromausfall, Virenbefall, verlorene Partition und viele mehr.

Die einfache Oberfläche ermöglicht es Ihnen, Daten von Linux-Festplatten mit nur wenigen Klicks wiederherzustellen.

Funktioniert über eine Fernverbindung. Sie können verlorene Daten wiederherstellen, selbst wenn Ihr Linux-Gerät abgestürzt ist.

Wir zeigen Ihnen, wie Sie Wondershare Recoverit unter Linux verwenden, um gelöschte Daten wiederherzustellen. Wenn Ihnen das Lesen der Anweisungen schwer fällt, können Sie sich hier ein Video mit einer ausführlicheren Anleitung ansehen.

Kostenloser Download

Für Windows Vista/7/8/10/11

Kostenloser Download

Für macOS X 10.10 - macOS 13

Schritt 1. Recoverit Linux Recovery

Starten Sie die Wondershare Recoverit Software auf Ihrem Linux-Gerät. Wählen Sie dann die Optionen NAS und Linux auf der linken Seite der Oberfläche. Um fortzufahren, wählen Sie Linux Recovery.

recoverit linux recovery

Schritt 2. Linux-Fernverbindung

Geben Sie in dem neu erscheinenden Fenster die erforderlichen Informationen ein, um eine Fernverbindung herzustellen. Sobald Sie fertig sind, drücken Sie auf Verbinden.

linux-fernverbindung

Während Sie darauf warten, dass die Verbindung hergestellt wird, beginnt Recoverit mit einer automatischen Suche nach verlorenen Daten auf einem Linux-Computer.

Schritt 3. Prozess der Wiederherstellung

Je nachdem, wie viele Daten gescannt werden, kann der Scan-Vorgang einige Zeit in Anspruch nehmen; der Scan-Status wird in der unteren Leiste angezeigt. Die beste Funktion von Recoverit ist die Möglichkeit, den Scanvorgang anzuhalten, wenn eine Datei wiederhergestellt werden soll.

Automatischer Scan-Vorgang

Wenn der Scan-Vorgang abgeschlossen ist, können Sie mit Recoverit die Dateien überprüfen, um sicherzustellen, dass es sich um die Dateien handelt, die Sie wiederherstellen möchten. Wählen Sie Wiederherstellen, um die Datei auf Ihrem Linux-Gerät zu speichern.

Vorschau und Wiederherstellung von Daten

Die Software wird Sie auffordern, einen Speicherort für die wiederhergestellten Dateien auf Ihrem Gerät auszuwählen. Vergewissern Sie sich, dass Sie zu einem anderen Speicherort gehen als dem, an dem Sie Ihre Dateien zuvor verloren haben.

Kostenloser Download

Für Windows Vista/7/8/10/11

Kostenloser Download

Für macOS X 10.10 - macOS 13

Fazit

"lsof" ist ein nützliches Kommandozeilenprogramm zur Anzeige von Informationen über Dateien, die von Prozessen in Unix-ähnlichen Systemen geöffnet wurden. Das Auffinden und Wiederherstellen geöffneter, aber gelöschter Dateien ist jedoch ein komplexer Prozess und erfordert ein gewisses Maß an technischem Know-how. In solchen Fällen kann eine Dateiwiederherstellungssoftware wie Recoverit eine benutzerfreundlichere Alternative sein, da sie eine einfache Benutzeroberfläche zum schnellen Scannen und Wiederherstellen gelöschter Dateien bietet.

Das könnte Ihnen auch gefallen

Wie man Dateien mit debugfs unter Linux wiederherstellt

Eine Anleitung zur Wiederherstellung gelöschter Dateien mit debugfs - einem interaktiven Debugger für das Linux-Dateisystem.

Beste Alternativen zu Recuva für Linux

Dieser Artikel stellt Recuva und seine Einschränkungen vor und bietet gleichzeitig die besten Alternativen.

Wie man Foremost zum Wiederherstellen von Dateien unter Linux verwendet und seine Alternative

Hier erfahren Sie, wie Sie Foremost installieren und verwenden, um Daten unter Linux wiederherzustellen und was die beste Alternative ist.

Wie man Dateien oder Verzeichnisse rekursiv in Linux entfernt

Hier sind die Schritte zum rekursiven Entfernen von Dateien oder Verzeichnissen/Ordnern in Linux