Disk-Usage

df -h 和 dfc 的區別

  • May 14, 2016

dfc為什麼和之間的使用尺寸有差異df -h

$ df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda7        64G     51G   11G   83% /
none            4,0K       0  4,0K    0% /sys/fs/cgroup
udev            3,9G    4,0K  3,9G    1% /dev
tmpfs           801M    1,5M  799M    1% /run
none            5,0M       0  5,0M    0% /run/lock
none            4,0G    148K  4,0G    1% /run/shm
...

$ dfc

FILESYSTEM  (=) USED      FREE (-) %USED AVAILABLE     TOTAL MOUNTED ON 
/dev/sda7   [=================---]   83%     10.6G     63.9G /
none        [--------------------]    0%      4.0K      4.0K /sys/fs/cgroup
udev        [=-------------------]    0%      3.9G      3.9G /dev
tmpfs       [=-------------------]    0%    798.7M    800.1M /run
none        [--------------------]    0%      5.0M      5.0M /run/lock
none        [=-------------------]    0%      3.9G      3.9G /run/shm
...

我不會將 3.9 舍入到 4,然後顯示 4,0,這對我來說毫無意義。

它不僅僅是“四捨五入”。 dfc(和di)列印四捨五入到最接近的數字表示的值,同時df四捨五入**。**

該問題未指定 coreutils 的版本;我根據版本 8.13(在 Debian 7 中)回答,儘管我看到與 8.25 相同的結果。

從以下-h選項開始df.c

   case 'h':
     human_output_opts = human_autoscale | human_SI | human_base_1024;
     output_block_size = 1;
     break;

gnulib 的“human.c”(humblock)中有後續程式碼,它決定使用哪種類型的捨入。因為未修改人工選項,所以它使用上限而不是下限四捨五入到最接近的值。這是因為 0 恰好是上限的列舉值:

 /* Unless otherwise specified these options may be ORed together.  */

 /* The following three options are mutually exclusive.  */
 /* Round to plus infinity (default).  */
 human_ceiling = 0,
 /* Round to nearest, ties to even.  */
 human_round_to_nearest = 1,
 /* Round to minus infinity.  */
 human_floor = 2,

引用自:https://unix.stackexchange.com/questions/148583