Di Linux, Anda bisa mendapatkan informasi mount point langsung dari kernel di /proc/mounts
. The mount
Program mencatat informasi yang sama di /etc/mtab
. Path dan opsi mungkin berbeda, seperti yang /etc/mtab
mewakili apa yang mount
diteruskan ke kernel sedangkan /proc/mounts
menunjukkan data seperti yang terlihat di dalam kernel. /proc/mounts
selalu terkini 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 yang dipisahkan spasi-putih pertama 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 beberapa kasus tepi di mana Anda mungkin tidak mendapatkan apa yang Anda harapkan. Jika perangkat dipasang melalui jalur berbeda /dev
yang menunjuk perangkat yang sama, Anda tidak akan melihatnya dengan cara ini. Dalam /proc/mounts
, bind mount tidak dapat dibedakan dari aslinya. Mungkin ada lebih dari satu pertandingan jika titik pemasangan membayangi yang lain (ini tidak biasa).
Di /proc/self
atau /proc/$pid
, ada file per proses mounts
yang meniru file global. Informasi pemasangan dapat bervariasi di antara proses, misalnya karena chroot
. Ada file tambahan yang disebut mountinfo
yang memiliki format yang berbeda dan mencakup lebih banyak informasi, khususnya perangkat nomor utama dan kecil. 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 dengan 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}'
Gilles 'SANGAT berhenti menjadi jahat'
sumber
udisks
symlink (di / dev / disk / by-label / ...). Tapi saya bisa memutuskan menggunakan node perangkatreadlink -f
. Saya suka/proc/mounts
idenya, saya pikir itu mungkin sedikit lebih dapat diandalkan daripada/etc/mtab
.mountinfo
. Panggilstat
untuk mendapatkan nomor perangkat (lihat jawaban saya yang diperbarui, saya lupa untuk memasukkan perintah sebelumnya).-d " "
opsi untukcut
digrep
perintah itu.findmnt
danlsblk
perintah khusus yang melakukan kerja keras (lebih kuat) untuk AndaDi Linux, Anda sekarang dapat menggunakan
findmnt
perintah dariutil-linux
(sejak versi 2.18):Atau
lsblk
(juga dariutil-linux
, sejak 2,19):Yang itu juga berguna untuk menemukan semua sistem file yang dipasang di bawah perangkat tertentu (disk atau partisi ...):
Untuk mendapatkan mountpoint saja:
Di atas
findmnt
tidak kembali dengan status keluar gagal jika perangkat tidak dipasang, tidaklsblk
.Begitu:
sumber
The
mount
perintah tanpa argumen akan menampilkan semua filesystem saat ini dipasang; Anda dapat melakukannyagrep
untuk cakram yang Anda inginkan (ataugrep
/etc/mtab
file yangmount
dibaca informasinya):sumber
grep ${NODE} /etc/mtab | cut -d ' ' -f 2
seharusnya melakukannya.grep ^"${NODE}[[:space:]]\+" /etc/mtab | cut -d ' ' -f 2"
jauh lebih rapuh ...Iya nih. Anda dapat melihat Hanya Menampilkan Mount Poin Menarik / Memfilter Jenis Tidak Menarik atau Daftar Direktori di bawah
/
yang Tidak Di Bawah Mountpoint yang Sama untuk beberapa contoh penggunaan, tetapi ada juga ikhtisar singkat di bawah ini. Perintah yang Anda tanyakan adalahfindmnt
(meskipunlsblk
mungkin juga melayani) :Sekarang, seperti yang Anda lihat,
/dev/sda1
sudah terpasang/esp
. Saya bertanya-tanya apakah itu dipasang di tempat lain juga?Aha. Saya melihat. Subfolder juga
--bind
dipasang pada saat boot. Baik...Tidak ada. Apa apaan?
Ohhh ... Yah, itu bagus. Hmmm...
Oh, ya, itu sangat bagus.
Sekarang mari kita masukkan sda1 kembali ke tempatnya dan coba lagi ...
Tetapi di mana saya menemukan perintah ajaib ini?
sumber
Saya tidak tahu cara bersih dan sederhana untuk mendeteksi apakah node perangkat
/dev
terpasang atau tidak . Ini yang bisa saya tawarkan. Ini menangani perangkat yang dipasang langsung (/dev/sda1
) dan perangkat yang dipasang oleh UUID (/dev/disk/by-uuid/aa4e7b08-6547-4b5a-85ad-094e9e1af74f
). Itu rusak jika nama perangkat Anda mengandung spasi.Fungsi menulis entri dari
/proc/mounts
ke stdout jika ditemukan, juga mengatur status keluar ke 0. Jika tidak, status keluar adalah 1.sumber
Cukup jalankan perintah di bawah ini:
sumber