df ให้ผลลัพธ์ที่แตกต่างเมื่อโทรหาอุปกรณ์เฉพาะ


2

ฉันได้รับเอาต์พุตต่าง ๆ สำหรับอุปกรณ์เดียวกัน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>

คุณสังเกตเห็นว่าผลลัพธ์ของdf /dev/sdb1เหมือนกันกับบรรทัดแรกของdfผลลัพธ์หรือไม่
D34DM347

ใช่ แต่ผลลัพธ์ของdf /dev/sda1มันเหมือนกันdfและฉันกำลังเรียกdf /dev/sdb1วิธีเดียวกัน
mjuopperi

มันเกือบจะดูเหมือนว่าคุณมีพื้นที่อยู่ในคำสั่งของคุณเพื่อให้คุณได้รับสิ่งที่ต้องการออกแทนdf /dev/ sdb1 df /dev/sdb1
Zoredache

ls -l /dev/sda1 /dev/sdb1โปรดให้เอาท์พุทจาก ฉันคิดว่าอุปกรณ์/dev/sdb1นั้นไม่มีอยู่ในระบบที่กำลังทำงานของคุณ (แต่มีอยู่ใน initramfs) หรือว่ามันมีอยู่ แต่ชี้ไปยังอุปกรณ์อื่นที่ไม่ใช่สำหรับ initramfs
roaima

@roaima เพิ่มให้กับคำถามดั้งเดิมเพื่อการจัดรูปแบบที่ดีขึ้น คัดลอกวางโดยตรงจากเทอร์มินัล
mjuopperi

คำตอบ:


0

ใช้จุดเมานท์แทนการใช้ระบบไฟล์สำหรับการนี้

ดังนั้นโดยสิ่งที่คุณมีที่นี่:

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 ทำงาน - ฉันจะมีไฟล์ที่อยู่ใน "heck ถ้าฉันรู้" bin ดูเหมือนว่าแมลง

หากต้องการทดสอบสิ่งต่อไป - หากคุณลองด้านล่างคุณจะสังเกตเห็นว่าทั้งสองจะล้มเหลว:

df tmpfs
df udev

1
ฉันคิดว่าคุณพูดถูก df /dev/sdb1และdf /devคืนค่าเดิมและใช้งานเมาต์พอยต์
mjuopperi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.