So löschen Sie eine Datei über einen Inode im Linux-Kernel

So löschen Sie eine Datei über einen Inode im Linux-Kernel

Ich habe den Inode einer Datei im Linux-Kernel und möchte die Datei über den Inode löschen.

Muss ich die Verknüpfung jedes Dentry des Inodes aufheben? Oder muss ich die Verknüpfung aller Dentrys aufheben?

Welche Schlösser soll ich zum Schutz was verwenden?

Antwort1

Aufrufe zum Entfernen portabler Dateien, unlink(), remove() und Wrapper auf höherer Ebene nehmen praktisch alle Pfadnamen an. Inodes sind hauptsächlich ein Implementierungsdetail.

Um dies in der Shell zu tun, verwenden Sie Tools wie GNUfinden.

find /tmp  -type f -inum $INODE

Ersetzen Sie es /tmpdurch den zu suchenden Pfad $INODEund die Nummer. Fügen Sie es hinzu, -delete wenn Sie die Ergebnisse unverknüpft haben möchten. Es können mehrere Namen desselben Inodes gefunden werden.

Da diese Methode alle Dateien durchläuft, ist sie nicht effizient.

Antwort2

Unter Linux können Sie eine Datei nicht löschen.

Was dudürfenSie müssen lediglich alle Verweise darauf entfernen. Anschließend entfernt das Dateisystem automatisch den Speicherplatz und markiert den Inode als unbenutzt.

Beachten Sie jedoch, dass Dateien von laufenden Prozessen referenziert werden können. Die Datei bleibt bestehen, auch wenn nichts im Dateisystem darauf verweist. Bis der Prozess beendet wird oder die Datei geschlossen wird, bleibt sie bestehen.

verwandte Informationen