Daripada menggunakan mount | grep
, saya ingin menggunakan mount -l -t bind
, tapi itu tidak berhasil, dan -t none
menunjukkan semua tunggangan.
sumber
Daripada menggunakan mount | grep
, saya ingin menggunakan mount -l -t bind
, tapi itu tidak berhasil, dan -t none
menunjukkan semua tunggangan.
Bind mounts bukan tipe sistem file, atau parameter dari sistem file yang dipasang; mereka adalah parameter operasi mount . Sejauh yang saya tahu, urutan perintah berikut mengarah pada status sistem yang pada dasarnya identik sejauh menyangkut kernel:
mount /dev/foo /mnt/one; mount --bind /mnt/one /mnt/two
mount /dev/foo /mnt/two; mount --bind /mnt/two /mnt/one
Jadi satu-satunya cara untuk mengingat mount apa yang mengikat mount adalah log dari mount
perintah yang tersisa /etc/mtab
. Operasi mount bind ditunjukkan oleh opsibind
mount (yang menyebabkan tipe sistem file diabaikan). Tetapi tidak memiliki opsi untuk mendaftar hanya sistem file yang dipasang dengan seperangkat set opsi tertentu. Karena itu Anda perlu melakukan pemfilteran sendiri.mount
mount | grep -E '[,(]bind[,)]'
</etc/mtab awk '$4 ~ /(^|,)bind(,|$)/'
Perhatikan bahwa /etc/mtab
ini hanya berguna di sini jika file teks dikelola oleh mount
. Beberapa distribusi ditetapkan /etc/mtab
sebagai tautan simbolik /proc/mounts
sebagai gantinya; /proc/mounts
sebagian besar setara dengan /etc/mtab
tetapi memang memiliki beberapa perbedaan, salah satunya adalah tidak melacak bind mounts.
Salah satu informasi yang disimpan oleh kernel, tetapi tidak ditampilkan /proc/mounts
, adalah ketika titik mount hanya memperlihatkan bagian dari pohon direktori pada sistem file yang di-mount. Dalam praktiknya ini kebanyakan terjadi dengan bind mounts:
mount --bind /mnt/one/sub /mnt/partial
Di /proc/mounts
, entri untuk /mnt/one
dan /mnt/partial
memiliki perangkat yang sama, jenis sistem file yang sama dan opsi yang sama. Informasi yang /mnt/partial
hanya memperlihatkan bagian dari sistem file yang di-root /sub
dapat dilihat pada informasi titik mount per-proses di /proc/$pid/mountinfo
(kolom 4). Entri di sana terlihat seperti ini:
12 34 56:78 / /mnt/one rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
12 34 56:78 /sub /mnt/partial rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
findmnt | fgrep [
seperti yang dijelaskan di sini .mount --version
yang Anda gunakan yang merekambind
informasi/etc/mtab
? Saya menggunakan versi 2.20.1 dan saya melihat sumber-sumber terbaru dan dalam kasus apa pun saya tidak melihat informasi yang direkam di mana saja yang akan memungkinkan Anda untuk menerimabind
. Di sisi lain, apa yang saya sarankan dalam jawaban saya sebenarnya daftar mengikat gunung dibuat dengan--bind
serta menggunakanbind
opsi .</etc/mtab awk …
adalah POSIX-compliant (Saya lupa apakah itu didukung di Bourne). Periksa fakta Anda. Saya dapat mengonfirmasi bahwa/etc/mtab
memilikibind
opsi untuk sistem file yang terpasangmount --bind /source /target
pada pada Debian stable (mount dari util-linux-ng 2.17.2).mount
dan/etc/mtab
. Anda menggunakan stabil Debian yang memiliki versi util-linux-ng yang lebih lama; Saya menggunakan pengujian Debian yang memiliki versi yang lebih baru yang tidak lagi tampaknya memiliki sama/etc/mtab
perilaku, yang mungkin mengapa @rozcietrzewiacz tidak melihatbind
di dalam/etc/mtab
jika distribusi nya juga menggunakan versi yang lebih baru?findmnt
sebagai jawaban. Ngomong-ngomong, direktori target bukan titik mount yang lain. Coba misalnyasudo mount --bind / foo && findmnt | grep foo
Mungkin ini bisa melakukan trik:
Contoh:
sumber
/
itu sendiri diikat bind, misalnya, output tidak memiliki[...]
.Kernel tidak menangani mount bind berbeda dari mount normal setelah fakta. Satu-satunya perbedaan dalam apa yang terjadi saat
mount
berjalan.Ketika Anda memasang sistem file (mis. Dengan
mount -t ext4 /dev/sda1 /mnt
) kernel (sedikit disederhanakan) melakukan tiga langkah:-t
atau menggunakan-t auto
mount
tipe tebakan untuk Anda dan memberikan tipe tebakan ke kernel)nodev
contohnya adalah opsi pada mountpoint, bukan pada filesystem. Anda dapat memiliki bind mount dengannodev
dan tanpa itu)Jika Anda melakukan bind mount (mis. Dengan
mount --bind /a /b
) hal berikut ini terjadi:(Saya akan lewati
mount --move
, karena tidak relevan dengan pertanyaan.)Ini mirip dengan bagaimana file dibuat di Linux:
Jika Anda membuat tautan keras, hal berikut terjadi:
Seperti yang Anda lihat, file yang dibuat dan tautan keras tidak bisa dibedakan:
Tetapi , karena Anda dapat mengidentifikasi semua hardlink ke file dengan membandingkan nomor inode, Anda dapat mengidentifikasi semua mount ke sistem file dengan membandingkan utama: jumlah mount yang kecil.
Anda dapat melakukan ini dengan
findmnt -o TARGET,MAJ:MIN
atau dengan melihat langsung/proc/self/mountinfo
( lihat dokumentasi kernel Linux untuk informasi lebih lanjut ).Skrip Python berikut mencantumkan semua bind mounts. Ini mengasumsikan bahwa titik pemasangan tertua dengan jalur relatif terpendek ke akar sistem file yang dipasang adalah pemasangan asli.
sumber
sumber
Ini mirip dengan jawaban findmnt lainnya, tetapi menghindari masalah pemformatan.
Untuk menampilkan semua submount:
Untuk menampilkan semua submount sistem file tipe ext4:
Untuk menampilkan semua mount kecuali submount:
Untuk menampilkan semua mount sistem file tipe ext4 tidak termasuk submount:
"-N" menghapus header dan "--list" menghapus baris dari format "tree".
Diuji pada regangan Debian.
sumber