Apakah ada perintah sederhana yang mengambil simpul perangkat disk sebagai input, dan memberi tahu saya di mana (dan apakah) disk itu dipasang? Apakah mungkin untuk mendapatkan titik pemasangan dengan sendirinya, sehingga saya dapat meneruskannya ke perintah lain?
Saya sedang mengerjakan sistem live Debian Squeeze dengan instalasi minimal (saya dapat menginstal paket tambahan jika perlu).
Jawaban yang Diterima:
Di Linux, Anda bisa mendapatkan informasi mount point langsung dari kernel di /proc/mounts
. mounts
program mencatat informasi serupa di /etc/mtab
. Jalur dan opsi mungkin berbeda, seperti /etc/mtab
mewakili apa mounts
diteruskan ke kernel sedangkan /proc/mounts
menunjukkan data seperti yang terlihat di dalam kernel. /proc/mounts
selalu up-to-date sedangkan /etc/mtab
mungkin tidak jika /etc
hanya-baca di beberapa titik yang tidak diharapkan oleh skrip boot. Formatnya mirip dengan /etc/fstab
.
Di kedua file, bidang pertama yang dipisahkan spasi berisi jalur perangkat dan bidang kedua berisi titik pemasangan.
awk -v needle="$device_path" '$1==needle {print $2}' /proc/mounts
atau jika Anda tidak memiliki awk:
grep "^$device_path " /proc/mounts | cut -d ' ' -f 2
Ada sejumlah kasus tepi di mana Anda mungkin tidak mendapatkan apa yang Anda harapkan. Jika perangkat dipasang melalui jalur yang berbeda di /dev
yang menunjuk perangkat yang sama, Anda tidak akan melihatnya seperti ini. Di /proc/mounts
, bind mount tidak dapat dibedakan dari aslinya. Mungkin ada lebih dari satu kecocokan jika titik pemasangan membayangi yang lain (ini tidak biasa).
Di /proc/self
atau /proc/$pid
, ada mounts
per-proses file yang meniru file global. Informasi pemasangan dapat bervariasi antar proses, misalnya karena chroot
. Ada file tambahan bernama mountinfo
yang memiliki format berbeda dan mencakup lebih banyak informasi, khususnya nomor mayor dan minor perangkat. Dari dokumentasi:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
(1) mount ID: unique identifier of the mount (may be reused after umount)
(2) parent ID: ID of parent (or of self for the top of the mount tree)
(3) major:minor: value of st_dev for files on filesystem
(4) root: root of the mount within the filesystem
(5) mount point: mount point relative to the process's root
(6) mount options: per mount options
(7) optional fields: zero or more fields of the form "tag[:value]"
(8) separator: marks the end of the optional fields
(9) filesystem type: name of filesystem of the form "type[.subtype]"
(10) mount source: filesystem specific information or "none"
(11) super options: per super block options
Jadi, jika Anda mencari perangkat berdasarkan nomor, Anda dapat melakukannya seperti ini:
awk -v dev="$major:minor" '$3==dev {print $5}'
awk -v dev="$(stat -L -c %t:%T /dev/block/something)" '$3==dev {print $5}'