Jika saya mengerti pertanyaan Anda, Anda ingin tahu perangkat mana yang digunakan untuk pemasangan yang diberikan. Untuk ini, Anda dapat menggunakan df
perintah:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-root 50G 21G 27G 44% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 14M 3.8G 1% /dev/shm
tmpfs 3.8G 984K 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 3.8G 3.4M 3.8G 1% /tmp
/dev/sda1 477M 99M 349M 23% /boot
/dev/mapper/fedora_greeneggs-home 402G 184G 198G 49% /home
Untuk menemukan di mana perangkat file / direktori tertentu ditemukan, berikan file sebagai argumen df
. Menggunakan contoh Anda:
$ df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 477M 99M 349M 23% /
Anda juga dapat menggunakan mount
perintah:
$ mount | grep '^/dev'
/dev/mapper/fedora_greeneggs-root on / type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/fedora_greeneggs-home on /home type ext4 (rw,relatime,seclabel,data=ordered)
Direktori yang dipasang untuk setiap perangkat adalah argumen ke-3 dalam output di atas. Jadi untuk perangkat /dev/sda1
akan /boot
. Perangkat lain memanfaatkan LVM (Logical Volume Management) dan perlu ditanyakan lebih lanjut untuk mengetahui perangkat mana yang sebenarnya digunakan oleh LVM.
$PWD
(yang saya mount) dimakamkan di serangkaian symlink, bind mounts, dll maka saya akan perlu memeriksa secara rekursif jalur untuk titik mount./proc/mounts
"benda" yang dipasang, setidaknya dalam pikiran saya, bukan perangkat itu adalah direktori / file.readlink -f /mnt
ditampilkan?readlink -f /mnt
memberi/mnt
Di Linux kami membuat
findmnt
dari yangutil-linux
tepat untuk iniKeuntungan tentang solusi lain adalah masih berfungsi jika jalur dikaburkan oleh symlink atau duplikat bind mounts.
sumber
Metode paling akurat yang saya tahu adalah menggunakan output dari panggilan sistem lstat (). Secara khusus, bidang st_dev. Ada utilitas baris perintah, stat (1) yang dapat digunakan untuk melihat informasi ini. Misalnya, keluaran "stat / etc / issue" di laptop saya:
Perhatikan baris ketiga, bidang pertama, "Perangkat". Ini daftar 801j. Nilai itu dapat dipisahkan menjadi dua byte, 8 dan 1. Byte pertama dikenal sebagai angka utama, byte kedua adalah angka minor. Jadi, langkah selanjutnya adalah mencari tahu apa perangkat utama 8, minor 1 itu.
Saya menemukan konsultasi / proc / partisi menjadi yang tercepat. Dalam kasus saya, / proc / partisi memiliki konten:
Dari keluaran itu agak jelas bahwa mayor 8, minor 1 adalah sda1. Kami dapat mengkonfirmasi ini dengan ls -l / dev / sda1
Perhatikan 8, 1 sebelum datestamp.
Sangat penting untuk memahami / mengingat bahwa nama file perangkat seperti / dev / sda1 hanya label. Angka utama dan kecil adalah nilai penting dan penting dari file perangkat. Jika Anda ingin tahu, periksa utilitas mknod (1) yang digunakan untuk membuat file perangkat. Saya dapat membuat entri baru / dev yang disebut aardvark dengan major 8, minor 18 dengan sintaks berikut:
Lalu, saya bisa dengan mudah memasangnya:
dan, jika kita melihat output dari perintah mount atau isi / proc / mounts dan kita melihat:
df -h menunjukkan:
... Bagaimanapun, inti dari semua ini adalah untuk menggambarkan bahwa detail penting untuk mengidentifikasi perangkat blok adalah angka utama dan kecil - bukan label file perangkat - dan bahwa menggunakan system call lstat () adalah cara terbaik untuk menanyakan nilai-nilai itu.
Sebagai komentar terakhir, saya hanya membaca ulang pertanyaan Anda untuk memastikan saya menjawabnya dan saya menyadari Anda menanyakan label perangkat sumber apa yang akan muncul di / proc / mounts untuk bind mount. Itu akan menjadi label perangkat sumber yang sama seperti yang digunakan dalam panggilan mount asli (2) untuk sumber mountpoint filesystem untuk bind mount. Mungkin sebuah contoh akan membantu:
Saya memiliki / dev / sdb2 dan / dev / aardvark (sama seperti di atas). Keduanya 8 besar, minor 18. Catatan, saya akan memasang sistem file yang sama dua kali. Saya melakukan hal berikut:
Perhatikan bahwa saya membuat direktori somedir di / mnt1. Tetapi karena / mnt1 dan / mnt2 memiliki sistem file yang sama, somedir juga dapat dijangkau melalui / mnt2.
Sekarang, jika kita memeriksa / proc / mounts, kita melihat:
Label perangkat sumber pada bind mount / foo / ... sama dengan nilai yang semula disediakan dalam panggilan mount filesystem (2). Ingat, / dev / aardvark dan / dev / sdb2 dalam contoh saya adalah perangkat yang sama.
Saya sadar saya baru saja mengetik novel dan babak pertama tidak benar-benar menjawab pertanyaan Anda sama sekali, tetapi sepertinya sia-sia menghapusnya. Mungkin itu akan membantu orang lain.
Semoga berhasil.
PS Perlu diingat bahwa beberapa sistem file berbasis jaringan - seperti NFS atau CIFS - atau virtual - seperti procfs atau sysfs dan tidak memiliki perangkat blok sumber. Saya tidak tahu apa yang akan dikembalikan sebagai perangkat dalam output stat, hanya untuk apa nilainya.
sumber
Diberi mountpoints khas berikut:
stat --format %m <path>
hanya akan mencetak mountpoint secara bulat (meskipun Anda perlu memeriksa kode keluar untuk secara jelas mendeteksi kesalahan izin; pendekatan mount-table menang di sini):Symlink berhati-hati seperti biasa:
Dan tentu saja ingatlah untuk menggunakan kutipan saat membuat skrip. Pertimbangkan jalur mountpoint dengan spasi dan semacamnya:
Seberapa besar adalah Anda?
Penyelesaian tab distro saya bahkan tidak dapat memperbaiki ini, jadi kami hanya akan menambahkan contoh mountpoint ini dengan carriage return dan linefeed dan menjalankan spasi:
sumber