Bagaimana cara mendapatkan daftar lengkap sistem file yang terpasang di Linux?


151

Saya biasanya menggunakan mountuntuk memeriksa sistem file mana yang di-mount. Saya juga tahu ada beberapa hubungan antara mountdan /etc/mtabtapi saya tidak yakin tentang detailnya. Setelah membaca Bagaimana memeriksa / proc / sudah terpasang saya semakin bingung.

Pertanyaan saya adalah: Bagaimana cara mendapatkan daftar sistem file yang paling tepat? Haruskah saya menggunakan mount, atau membaca isi /etc/mtab, atau isi /proc/mounts? Apa yang akan memberikan hasil yang paling bisa dipercaya?


3
Anda juga harus membaca jawaban yang diterima untuk pertanyaan ini: unix.stackexchange.com/questions/12040/…
nozimica

Saya tidak dapat membantu menautkan ke Apa itu / etc / mtab di Linux? karena itu mencakup detail non-Linux yang tidak ada jawaban di sini.
Weijun Zhou

Jawaban:


141

Daftar definitif sistem file yang dipasang ada di /proc/mounts.

Jika Anda memiliki segala bentuk wadah di sistem Anda, /proc/mountshanya daftarkan sistem berkas yang ada di wadah Anda saat ini. Sebagai contoh, dalam sebuah chroot , /proc/mountsdaftar hanya filesystem yang titik mountnya berada di dalam chroot. ( Ada cara untuk keluar dari chroot, pikiran. )

Ada juga daftar sistem file yang terpasang di /etc/mtab. Daftar ini dikelola oleh mountdan umountperintah. Itu berarti bahwa jika Anda tidak menggunakan perintah ini (yang sangat jarang), tindakan Anda (mount atau unmount) tidak akan direkam. Dalam praktiknya, sebagian besar dalam chroot Anda akan menemukan /etc/mtabfile yang sangat berbeda dari kondisi sistem. Selain itu, pemasangan yang dilakukan di chroot akan tercermin di chroot /etc/mtabtetapi tidak di main /etc/mtab. Tindakan yang dilakukan saat /etc/mtabberada pada sistem file read-only juga tidak direkam di sana.

Alasan mengapa Anda kadang-kadang ingin berkonsultasi /etc/mtabdalam preferensi atau di samping /proc/mountsadalah karena memiliki akses ke mount command line, kadang-kadang dapat menyajikan informasi dengan cara yang lebih mudah dimengerti; misalnya Anda melihat opsi mount seperti yang diminta (sedangkan /proc/mountsdaftar mountkernel dan default juga), dan binding mount muncul seperti di /etc/mtab.


1
Apa gunanya mountmempertahankan /etc/mtabjika tidak bisa diandalkan? Bukankah lebih baik jika mountdisajikan informasi dari /proc/mountsbukan?
Piotr Dobrogost

2
@PiotrDobrogost /etc/mtabdapat merekam informasi yang tidak dilacak oleh kernel, seperti opsi yang diminta sebelumnya, dan ikat tunggangan muncul seperti itu alih-alih muncul sebagai duplikat entri untuk perangkat. Meskipun demikian banyak distribusi bergerak menuju pembuatan /etc/mtabsymlink /proc/mounts.
Gilles

3
Meskipun demikian banyak distribusi bergerak menuju pembuatan /etc/mtabsymlink /proc/mounts. Senang mendengar - menambahkan informasi ini untuk menjawab akan membuatnya lebih baik. Apakah menurut Anda melacak opsi yang diminta oleh kernel akan layak dan bermanfaat?
Piotr Dobrogost

2
Perhatikan bahwa Anda harus melepaskan diri dari konten / proc / mounts. Seperti yang dijelaskan pada halaman getmntent (3), spasi (\ 040), tab (\ 011), baris baru (\ 012) dan garis miring terbalik (\ 134) perlu ditangani secara khusus. Terutama jika pemasangan pengguna diaktifkan, Anda harus sangat berhati-hati saat bekerja dengan jalur ini.
Eric

2
Silakan lihat juga jawaban lain untuk menggunakan perintah findmntyang merupakan cara yang disukai sejak 2010 dan kemungkinan satu-satunya cara aman dalam waktu dekat ketika mount namespaces akan umum.
Marki555

68

Pada v. 2.18 (Juli 2010) util-linux termasuk alat yang memungkinkan Anda untuk menampilkan daftar sistem file yang sedang dipasang:

findmnt

Anda dapat beralih dari tampilan hierarki default ke tampilan daftar -l, menentukan kolom output dengan -o(mirip dengan lsblk), memfilter hasil berdasarkan tipe sistem file dengan -tdll ...

findmnt -lo sumber, target, fstype, label, opsi, digunakan -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

Untuk lebih jelasnya baca manhalaman (dan findmnt --helpuntuk mendapatkan daftar kolom yang tersedia)


33

Mungkin karena sudah 5 tahun sejak pertanyaan ini dijawab semuanya telah berubah. The cat /proc/mountsmenciptakan banyak info yang Anda tidak peduli tentang. Hari ini, IMHO, saya menemukan ini sebagai solusi akhir.

df -h --output=source,target

ketika Anda membaca halaman manual ada banyak jenis opsi yang dapat Anda lakukan tetapi ini adalah apa yang Anda lakukan. Misalnya untuk membersihkan hasil lebih banyak lagi, Anda dapat mengecualikan jenis file "tmpfs" dengan perintah ini:

df -hx tmpfs --output=source,target

df bekerja pada level sistem file dan bukan pada level file.

Perintah di atas akan mencakup pemasangan jaringan juga.

Untuk melihat lebih banyak informasi, gunakan ini:

df -hT

CATATAN Dengan koneksi jaringan yang dipasang lambat, ini membutuhkan waktu beberapa menit!

Jika Anda tidak memiliki atau peduli dengan koneksi jaringan yang dipasang (dan Anda memiliki izin root) maka ini lebih baik:

sudo lsblk -f

Anda tidak harus menjadi root tetapi beberapa bidang / kolom (seperti Label) akan memiliki data nol, yang mungkin masih oke karena pertanyaannya ingin tahu sistem file apa yang dipasang.
Rick

Ubuntu. Namun saya baru saja menemukan "findmnt" yang tidak menggunakan root dan daftar filesystem yang dipasang di jaringan. Saya berpikir untuk mengedit jawaban saya untuk memasukkan pengetahuan itu.
Rick

:-) Saya lelah untuk memberi jawaban Anda suara tetapi tidak bisa sampai saya memiliki perwakilan 15+
Rick

1
Btw, jika Anda mencoba menggunakan --outputsesuatu seperti Ubuntu 12 yang tidak menerima opsi-opsi itu, lihat findmntjawaban don_crissti di bawah ini.
Mat Schaffer

findmnttampaknya membutuhkan kemampuan yang lebih tinggi (diuji dengan root; root memiliki semua kemampuan) untuk menampilkan label.
ctrl-alt-delor

23

Sebagian besar waktu, mountadalah metode yang paling nyaman. Untuk daftar lengkap dan sistem file yang saat ini dipasang, Anda harus membaca konten /proc/mounts(misalnya, dengan cat /proc/mounts).

Misalnya, jika pemasangan /readwrite gagal dan kemudian dipasang hanya dibaca sebagai fallback, /etc/mtab(yang mountdibaca dari perintah untuk memberi tahu Anda apa yang dipasang, dan menulis ke - jika bisa - ketika ia mengubah apa yang dipasang) tidak akan diperbarui untuk mencerminkan bahwa /(yang berisi /etc/mtab) saat ini dipasang hanya baca. Dalam situasi ini, menjalankan mountbiasanya akan memberi tahu Anda (secara tidak benar) yang /sudah diinstal readwrite.

Dalam kondisi normal (yaitu, ketika filesystem yang berisi itu dapat ditulis ke), /etc/mtabberisi daftar filesystem yang saat ini dipasang. Ini tidak harus bingung dengan /etc/fstab, yang berisi daftar filesystem yang seharusnya dipasang secara otomatis ketika sistem dinyalakan.

Tentu saja, jika /procsistem file virtual itu sendiri tidak di-mount, maka Anda tidak dapat membaca file virtual apa pun di dalamnya, yang termasuk di dalamnya /proc/mounts. Ini sangat jarang terjadi. Dalam situasi ini, mountmungkin merupakan pilihan terbaik Anda untuk melihat apa yang dipasang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.