Warum unterstützt der du (1) -Befehl von unix -i nicht für die Inode-Messung?

3045
nick black

Ist es einfach so, weil das Wechseln von Dateinamen zu Inode-Nummern im Benutzerraum schwierig ist und Sie von dort aus keine Inodes lesen können?

7
Die Antwort ist zweifach, denke ich. Sie ist im Allgemeinen nicht verfügbar, da ein normaler Benutzer, wie vorgeschlagen, Inodes nicht willkürlich lesen kann. Es ist nicht als Tool verfügbar, das Root-Zugriff erfordert, da es keine einfache und zuverlässige Möglichkeit gibt, von Dateinamen zu Inode-Nummern außerhalb des Kernels zu wechseln. vor 12 Jahren 0
Besser auf unix.stackexchange.com Chris J vor 12 Jahren 0

3 Antworten auf die Frage

6
Berny

Die Implementierung von du (1) von GNU coreutils wird die Option --inodes mit der nächsten Version unterstützen (> 8.21) ... Ich habe den Patch gerade auf Upstream-Git übertragen ( http://git.sv.gnu.org/). cgit / coreutils.git / commit /? id = 333dc83d ). Siehe http://lists.gnu.org/archive/html/coreutils/2013-07/msg00087.html

Sollte das "> 8.21" oder "≥ 8.21" sein? gerrit vor 6 Jahren 0
2
fge

Verwenden Sie dfnicht du!

dusteht für "disk usage". Es dfsteht für "disk free" und prüft das korrekte Dateisystem. Inode-Nutzung mit der -iOption einschließen !

Ansonsten machen Sie einfach:

find thedirectory -exec ls -di {} \;|awk ''|sort|uniq|wc -c

oder ähnliches

Nein, ich möchte eine hierarchische Zusammenfassung der Inode-Nutzung von einer bestimmten Wurzel. Ich weiß, über welches Werkzeug ich spreche. vor 12 Jahren 0
Aber warum, warum, glaubst du, will er den Festplattenspeicherplatz im Dateisystem messen? Oleg Mikheev vor 12 Jahren 0
`find | wc -l`, dann ... Natürlich müssen Sie Dateien mit mehreren Links berücksichtigen. Aber deine Frage macht eigentlich keinen Sinn. vor 12 Jahren 0
@ Oleg, ich habe das überhaupt nicht gesagt. `df` hat eine` -i`-Option. vor 12 Jahren 0
2
Ronny Cook

Dies gibt keine exakte Antwort - insbesondere werden Verzeichniseinträge mit Dateien gleichgesetzt, so dass doppelte Links gezählt werden und Probleme mit Zeilenvorschüben in Datei- / Verzeichnisnamen auftreten -, aber wahrscheinlich für die meisten Zwecke "gut genug" sind:

find /data | awk -F/ '}' | sort | uniq -c | sort -n 

Das wird nach Inode (sic) gezählt. Wenn Sie eine traditionelle Verzeichnissortierung wünschen:

find /data | awk -F/ '}' | sort | uniq -c | sort -k2 

Am häufigsten möchte ich so etwas wie, wenn einem Laufwerk die Inodes ausgehen und ich möchte wissen, wo sie verwendet werden. Zu diesem Zweck sind einige kleinere Ungenauigkeiten normalerweise keine große Sache.

Es sollte möglich sein, "find -ls" zu verwenden und die Inode-Nummern in der Auflistung zu analysieren, um Duplikate zu entfernen, wenn Sie etwas genaueres wünschen.