
Ich habe viel gesucht und keine 1K-blocks
Bedeutung im df-Befehl (gnu) gefunden, aber ich habe es berechnet und denke, es entspricht 1K Byte
? Gibt es eine offizielle Erklärung?
Wie berechnet man dann das Used Percentage
?
Zum Beispiel:
tankywoo@gentoo-jl::~/ » df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.9G 8.2G 42% /
tankywoo@gentoo-jl::~/ » df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 15481840 6163320 8532088 42% /
Ich weiß, dass auf meinem lokalen Computer Folgendes vorhanden ist reserved space
.
Gebraucht ist 6163320, verfügbar ist 8532088, also:
Ich denke, Used%
es sollte (15481840-8532088)/15481740 = 44,88 % sein, nicht 42 %.
Wie erhält man also das Ergebnis 42%
?
Antwort1
Der 1K-Block in GNU coreutils df(1) entspricht 1024 Bytes. Dies wird durch einen kurzen Blick auf den Quellcode von GNU coreutils, Version 8.13, bestätigt:
964 if (human_output_opts == -1)
965 {
966 if (posix_format)
967 {
968 human_output_opts = 0;
969 output_block_size = (getenv ("POSIXLY_CORRECT") ? 512 : 1024);
970 }
971 else
972 human_options (getenv ("DF_BLOCK_SIZE"),
973 &human_output_opts, &output_block_size);
974 }
Wie Sie sehen, beträgt die Standardausgabeblockgröße 1024, sofern keine Umgebungsvariable POSIXLY_CORRECT
festgelegt ist.
Bei der Berechnung des genutzten Prozentsatzes subtrahiert df(1) den reservierten Speicherplatz bzw. die reservierten Blöcke für den Root-Benutzer vom verfügbaren Speicherplatz, wenn das zugrunde liegende Dateisystem reservierten Speicherplatz bzw. reservierte Blöcke unterstützt (was bei den meisten der Fall ist):
529 if (known_value (total) && known_value (available_to_root))
530 {
531 used = total - available_to_root;
532 negate_used = (total < available_to_root);
533 }
Zusammenfassend ist die offizielle Autorität in diesem und jedem Fall der Quellcode.