Ubuntu

df 在呼叫特定設備時給出不同的結果

  • March 31, 2016

df如果我在沒有參數的情況下呼叫它或將設備作為參數呼叫它,我會為同一設備得到不同的輸出。執行 Ubuntu 14.04。

沒有參數:

➜  ~ df
Filesystem      1K-blocks       Used  Available Use% Mounted on
udev              4046644          4    4046640   1% /dev
tmpfs              811488       2532     808956   1% /run
/dev/sdb1       299337328   39634680  244474080  14% /
/dev/sda1      2884152536 1309806024 1427816876  48% /media/videos
...

作為/dev/sdb1論點,我對同一設備得到不同的結果:

➜  ~ df /dev/sdb1
Filesystem     1K-blocks  Used Available Use% Mounted on
udev             4046644     4   4046640   1% /dev

/dev/sda1似乎有效:

➜  ~ df /dev/sda1
Filesystem      1K-blocks       Used  Available Use% Mounted on
/dev/sda1      2884152536 1309806024 1427816876  48% /media/videos

/dev/sdb1是安裝作業系統的位置。

為什麼輸出不同/dev/sdb1但適用於/dev/sda1

輸出自ls

➜  ~  ls -l /dev/sda1 /dev/sdb1
brw-rw---- 1 root disk 8,  1 tammi  5 21:13 /dev/sda1
brw-rw---- 1 root disk 8, 17 tammi  5 21:13 /dev/sdb1

輸出自tune2fs

➜  #  tune2fs -l /dev/sda1 | grep 'Last mount' 
Last mounted on:          /media/videos
Last mount time:          Tue Jan  5 21:13:15 2016
➜  #  tune2fs -l /dev/sdb1 | grep 'Last mount'
Last mounted on:          /
Last mount time:          Tue Jan  5 21:13:14 2016
➜  ~  last reboot
reboot   system boot  3.13.0-62-generi Tue Jan  5 21:13 - 02:04 (1+04:51)   

更多系統資訊:

➜  ~  uname -svpio
Linux #102-Ubuntu SMP Tue Aug 11 14:29:36 UTC 2015 x86_64 x86_64 GNU/Linux

➜  ~  X=$(df | sed -rn 's,^(/[^ ]*) .*,\1,p') ; echo $X
/dev/sdb1
/dev/sda1

➜  ~  df | grep ^/
/dev/sdb1       299337328   39693968  244414792  14% /
/dev/sda1      2884152536 1309897424 1427725476  48% /media/videos

➜  ~  ls -ld /dev/sdb1 ; ls -ld /dev/sda1
brw-rw---- 1 root disk 8, 17 tammi  5 21:13 /dev/sdb1
brw-rw---- 1 root disk 8, 1 tammi  5 21:13 /dev/sda1

➜  ~  df /dev/sdb1 | tail -1; df /dev/sda1 | tail -1 
udev             4046644     4   4046640   1% /dev
/dev/sda1      2884152536 1309897424 1427725476  48% /media/videos

➜  ~  df | sed -rn 's,^(/[^ ]*) .*,<\1>,p'
</dev/sdb1>
</dev/sda1>

為此使用掛載點而不是文件系統

所以按照你在這裡的情況:

Filesystem      1K-blocks       Used  Available Use% Mounted on
udev              4046644          4    4046640   1% /dev
tmpfs              811488       2532     808956   1% /run
/dev/sdb1       299337328   39634680  244474080  14% /
/dev/sda1      2884152536 1309806024 1427816876  48% /media/videos

如果你想正確查詢**/dev/sda1**你應該使用:

df /media/videos

如果你想正確查詢**/dev/sdb1**你應該使用:

df /

我相信正在發生的是,當您執行 df /dev/sdb1 時,它會將其解釋為 df /dev,這是 udev 的掛載。至於 df /dev/sda1 工作 - 我將在“如果我知道的話”bin中保存文件。似乎是一個錯誤。

為了進一步測試 - 如果您嘗試以下操作,您會發現兩者都會失敗:

df tmpfs
df udev

引用自:https://serverfault.com/questions/746931