Minha explicação pessoal para esse efeito é a seguinte: df
lê o arquivo /proc/self/mountinfo
, mas não encontra /dev/sda1
lá.
Eu sei que lê /proc/self/mountinfo
porque quando eu faço strace df /dev/sda1
eu recebo a seguinte linha na saída
open("/proc/self/mountinfo", O_RDONLY) = 3
Agora, se examinarmos esse arquivo, /dev/sda
não está lá, mas ele encontra /dev/sdb
lá, o que explica os relatórios corretos para essas partições.
================
xieerqi:
$ grep 'sda' /proc/self/mountinfo
================
xieerqi:
$ grep 'sdb' /proc/self/mountinfo
43 22 8:18 / /media/WINDOWS rw,nosuid,nodev,noatime - fuseblk /dev/sdb2 rw,user_id=0,group_id=0,allow_other,blksize=4096
49 22 8:21 / /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625 rw,nosuid,nodev,relatime - ext4 /dev/sdb5 rw,data=ordered
Por que não está lá? Eu não sei. Eu só posso fornecer o que eu encontrei.
Mas por que ele reporta udev
na saída? df
examina os sistemas de arquivos e /dev/sda1
está sob a pasta /dev
, que é onde udev
virtual filesystem é montado. É o mesmo comportamento se chamarmos df FILE
, como df /home
ou df /media/MYWINDOWSPARTITION/RANDOMFILE.txt
Eu sugiro relatá-lo como um bug ou pelo menos perguntar aos desenvolvedores GNU sobre esse comportamento (copiado da página man)
REPORTING BUGS
Report df bugs to [email protected]
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report df translation bugs to <http://translationproject.org/team/>
Editar
Além disso, o comportamento df /
é explicado novamente pelo arquivo /proc/self/mountinfo
com a seguinte entrada
22 0 8:1 / / rw,noatime,nodiratime - ext4 /dev/disk/by-uuid/86df21bf-d95f-435c-9
292-273bdbcba056 rw,errors=remount-ro,data=ordered
O sistema de arquivos raiz é montado como /dev/dis/by-uuid/ACTUAL-UUID-NUMBER.
Mas eu não tenho explicação para df
sem argumentos relatando /dev/sda1
em vez do caminho para o disco por uuid. Provavelmente o motivo é porque /dev/dis/by-uuid/ACTUAL-UUID-NUMBER
em si é um link simbólico para /dev/sda1
, então resolve completamente sem argumentos, mas com argumentos precisa procurar /proc/self/mountinfo
file