ทำอย่างไรจึงจะได้รายชื่อระบบไฟล์ที่ถูกเมาท์ใน Linux ที่สมบูรณ์และแน่นอน?


150

ฉันมักจะใช้mountเพื่อตรวจสอบระบบไฟล์ที่ติดตั้ง ฉันยังรู้ว่ามีการเชื่อมต่อระหว่างบางmountและ/etc/mtabแต่ผมไม่แน่ใจว่าเกี่ยวกับรายละเอียด หลังจากอ่านวิธีการตรวจสอบว่า / proc / ติดตั้งฉันสับสนมากขึ้น

คำถามของฉันคือจะหารายการระบบไฟล์ที่เมาท์ได้อย่างแม่นยำที่สุดได้อย่างไร? ฉันควรใช้mountหรืออ่านเนื้อหาของ/etc/mtabหรือเนื้อหาของ/proc/mountsหรือไม่ อะไรจะให้ผลลัพธ์ที่น่าเชื่อถือที่สุด


3
คุณควรอ่านคำตอบที่ได้รับการยอมรับสำหรับคำถามนี้: unix.stackexchange.com/questions/12040/…
nozimica

ฉันไม่สามารถช่วยเชื่อมโยงไปยัง/ etc / mtab ใน Linux คืออะไร เพราะมันครอบคลุมรายละเอียดที่ไม่ใช่ Linux ซึ่งไม่มีคำตอบให้ที่นี่
Weijun Zhou

คำตอบ:


140

รายการที่ชัดเจนของ filesystems /proc/mountsติดตั้งอยู่ใน

หากคุณมีคอนเทนเนอร์รูปแบบใด ๆ ในระบบของคุณ/proc/mountsแสดงเฉพาะระบบไฟล์ที่อยู่ในคอนเทนเนอร์ปัจจุบันของคุณ ยกตัวอย่างเช่นในchroot , /proc/mountsแสดงรายการเฉพาะระบบไฟล์ที่มีการติดตั้งจุดอยู่ภายใน chroot ( มีหลายวิธีในการหลบหนีจาก chroot จิตใจ )

นอกจากนี้ยังมีรายชื่อของ filesystems /etc/mtabติดตั้งใน รายการนี้ดูแลโดยคำสั่งmountและ umountซึ่งหมายความว่าหากคุณไม่ใช้คำสั่งเหล่านี้ (ซึ่งค่อนข้างหายาก) การกระทำของคุณ (เมานต์หรือยกเลิกการต่อเชื่อม) จะไม่ถูกบันทึก ในทางปฏิบัติส่วนใหญ่จะเป็น chroot ที่คุณจะพบ/etc/mtabไฟล์ที่แตกต่างอย่างดุเดือดจากสถานะของระบบ นอกจากนี้เมาท์ดำเนินการใน chroot จะสะท้อนให้เห็นใน chroot ของแต่ไม่ได้อยู่ในหลัก/etc/mtab /etc/mtabการดำเนินการที่ทำในขณะที่/etc/mtabอยู่ในระบบไฟล์แบบอ่านอย่างเดียวจะไม่ถูกบันทึกไว้ที่นั่น

เหตุผลที่บางครั้งคุณต้องการปรึกษา/etc/mtabในการตั้งค่าหรือนอกเหนือจาก/proc/mountsนั้นเนื่องจากมีการเข้าถึงบรรทัดคำสั่ง mount บางครั้งจึงสามารถนำเสนอข้อมูลในแบบที่เข้าใจง่าย ตัวอย่างเช่นคุณจะเห็นตัวเลือก mount ตามที่ร้องขอ (ในขณะที่/proc/mountsรายการmountและค่าเริ่มต้นเคอร์เนลเช่นกัน) /etc/mtabและผูกม้าปรากฏเช่นนี้ใน


1
จุดประสงค์ของการmountบำรุงรักษาคืออะไร/etc/mtabหากไม่สามารถไว้วางใจได้ จะดีกว่าไหมหากmountนำเสนอข้อมูล/proc/mountsแทน
Piotr Dobrogost

2
@PiotrDobrogost /etc/mtabสามารถบันทึกข้อมูลที่เคอร์เนลไม่ได้ติดตามเช่นตัวเลือกที่มีการร้องขอตั้งแต่แรกเริ่มและการผูกการเชื่อมต่อที่ปรากฏเช่นนั้นแทนที่จะปรากฏเป็นรายการที่ซ้ำกันสำหรับอุปกรณ์ อย่างไรก็ตามการกระจายจำนวนมากกำลังมุ่งไปสู่การทำ/etc/mtabsymlink /proc/mountsให้
Gilles

3
อย่างไรก็ตามการกระจายจำนวนมากกำลังมุ่งไปสู่การทำ/etc/mtabsymlink /proc/mountsให้ ดีใจที่ได้ยิน - การเพิ่มข้อมูลนี้เพื่อตอบจะทำให้ดียิ่งขึ้น คุณคิดว่าการติดตามตัวเลือกที่ร้องขอโดยเคอร์เนลจะเป็นไปได้และเป็นประโยชน์หรือไม่?
Piotr Dobrogost

2
โปรดทราบว่าคุณจะต้องยกเลิกการหลีกเลี่ยงเนื้อหาของ / proc / mounts ตามที่อธิบายไว้ในหน้า getmntent (3), ช่องว่าง (\ 040), แท็บ (\ 011), บรรทัดใหม่ (\ 012) และแบ็กสแลช (\ 134) ต้องได้รับการจัดการเป็นพิเศษ โดยเฉพาะอย่างยิ่งหากเปิดใช้งานการเมาท์ผู้ใช้คุณจะต้องระมัดระวังเป็นอย่างมากเมื่อทำงานกับพา ธ เหล่านี้
Eric

2
โปรดดูคำตอบอื่น ๆ สำหรับการใช้คำสั่งfindmntซึ่งเป็นวิธีที่ต้องการตั้งแต่ปี 2010 และน่าจะเป็นวิธีเดียวที่ปลอดภัยในอนาคตอันใกล้เมื่อเมานต์เนมสเปซจะเป็นเรื่องปกติ
Marki555

68

ตั้งแต่ v. 2.18 (กรกฎาคม 2010) util-linuxมีเครื่องมือที่ช่วยให้คุณแสดงรายการระบบไฟล์ที่เมาท์ในปัจจุบัน:

findmnt

คุณสามารถเปลี่ยนจากมุมมองแบบต้นไม้เริ่มต้นไปเป็นมุมมองแบบรายการพร้อม-lกำหนดคอลัมน์ผลลัพธ์ด้วย-o(คล้ายกับlsblk) ผลการกรองตามประเภทระบบไฟล์ด้วย-tฯลฯ ...

findmnt -lo แหล่งที่มาเป้าหมาย fstype เลเบลตัวเลือกใช้ -t ext4
SOURCE    TARGET      FSTYPE LABEL OPTIONS                           USED
/dev/sda1 /           ext4   ARCH  rw,noatime,discard,data=ordered  17.6G
/dev/sdb2 /media/DATA ext4   DATA  rw,noatime,discard,data=ordered    44M

สำหรับรายละเอียดเพิ่มเติมอ่านmanหน้า (และfindmnt --helpเพื่อรับรายการคอลัมน์ที่มีอยู่)


33

อาจเป็นเพราะ 5 ปีแล้วที่คำถามนี้ได้รับคำตอบสิ่งที่เปลี่ยนแปลงไป การcat /proc/mountsสร้างข้อมูลจำนวนมากที่คุณไม่สนใจ วันนี้ IMHO ฉันพบว่านี่เป็นทางออกที่ดีที่สุด

df -h --output=source,target

เมื่อคุณอ่าน man pages มีตัวเลือกทุกประเภทที่คุณสามารถทำได้ แต่นี่คือสิ่งที่คุณทำ ตัวอย่างเช่นการล้างผลลัพธ์มากยิ่งขึ้นคุณสามารถยกเว้นประเภทไฟล์ของ "tmpfs" ด้วยคำสั่งนี้:

df -hx tmpfs --output=source,target

df ทำงานในระดับระบบไฟล์และไม่ได้ระดับไฟล์

คำสั่งดังกล่าวจะรวมถึงการติดตั้งเครือข่ายเช่นกัน

หากต้องการดูข้อมูลเพิ่มเติมให้ใช้สิ่งนี้:

df -hT

หมายเหตุด้วยการเชื่อมต่อเครือข่ายที่ช้าซึ่งอาจใช้เวลาหลายนาที!

หากคุณไม่มีหรือสนใจเกี่ยวกับการเชื่อมต่อเครือข่ายที่ติดตั้งอยู่ (และคุณมีสิทธิ์ใช้งานรูท) มากกว่านี้จะดีกว่า:

sudo lsblk -f

คุณไม่จำเป็นต้องรูท แต่บางฟิลด์ / คอลัมน์ (เช่น Label) จะมีข้อมูลที่ไม่เป็นโมฆะซึ่งอาจยังไม่เป็นไรในกรณีที่คำถามต้องการรู้ว่าระบบไฟล์ใดถูกเมาท์
Rick

อูบุนตู อย่างไรก็ตามฉันเพิ่งค้นพบ "findmnt" ที่ไม่ได้ใช้รูทและจะแสดงระบบไฟล์ที่ติดตั้งกับเครือข่าย ฉันกำลังคิดที่จะแก้ไขคำตอบของฉันเพื่อรวมความรู้นั้น
Rick

:-) ฉันเหนื่อยที่จะให้คำตอบของคุณลงคะแนน แต่ไม่สามารถจนกว่าฉันจะมีตัวแทนจาก 15+
Rick

1
Btw ถ้าคุณพยายามใช้--outputกับบางสิ่งเช่น Ubuntu 12 ที่ไม่ยอมรับตัวเลือกเหล่านั้นลองอ่านfindmntคำตอบของ don_crissti ด้านล่างนี้
Mat Schaffer

findmntดูเหมือนว่าต้องการความสามารถที่สูงขึ้น (ทดสอบด้วย root และ root มีความสามารถทั้งหมด) เพื่อแสดงป้ายกำกับ
ctrl-alt-delor

23

ส่วนใหญ่แล้วmountเป็นวิธีที่สะดวกที่สุด สำหรับรายการระบบไฟล์ที่เมาท์ในปัจจุบันที่สมบูรณ์และแน่นอนคุณควรอ่านเนื้อหาของ/proc/mounts(เช่นด้วยcat /proc/mounts)

ตัวอย่างเช่นหากการติดตั้ง/readwrite ล้มเหลวและถูกเมาท์แบบอ่านอย่างเดียวเป็นทางเลือก/etc/mtab(ซึ่งmountคำสั่งจะอ่านเพื่อบอกคุณว่าเมาต์อะไรและเขียนถึง - ถ้าทำได้ - เมื่อเปลี่ยนแปลงสิ่งที่เมาท์) จะไม่ถูกอัพเดต เพื่อสะท้อนให้เห็นว่า/(ซึ่งมี/etc/mtab) ติดตั้งอยู่ในขณะนี้แบบอ่านอย่างเดียว ในสถานการณ์นี้การเรียกใช้mountโดยทั่วไปจะแจ้งให้คุณทราบ (ไม่ถูกต้อง) ที่/เมาท์ readwrite

ภายใต้สภาวะปกติ (เช่นเมื่อระบบไฟล์ที่มีอยู่สามารถเขียนได้) จะ/etc/mtabมีรายการระบบไฟล์ที่เมาท์อยู่ในปัจจุบัน สิ่งนี้ไม่ควรสับสน/etc/fstabซึ่งมีรายการระบบไฟล์ที่ควรติดตั้งโดยอัตโนมัติเมื่อระบบเริ่มทำงาน

แน่นอนถ้า/procระบบแฟ้มเสมือนตัวเองไม่ได้ติดตั้งแล้วคุณจะไม่สามารถอ่านใด ๆ /proc/mountsของไฟล์เสมือนในนั้นซึ่งจะรวมถึง นี่เป็นกรณีที่เกิดขึ้นน้อยมาก ในสถานการณ์mountนี้น่าจะเป็นทางเลือกที่ดีที่สุดของคุณในการดูว่ามีอะไรติดตั้งอยู่

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