Saya mencari cara cepat untuk menemukan titik pemasangan sistem file yang berisi FILE yang diberikan. Apakah ada yang lebih sederhana atau lebih langsung daripada solusi saya di bawah ini?
df -h FILE |tail -1 | awk -F% '{print $NF}' | tr -d ' '
Pertanyaan serupa " Apakah ada perintah untuk melihat di mana disk dipasang? " Menggunakan simpul perangkat disk saat ini sebagai input, dan bukan file sembarang dari disk ...
shell
filesystems
mount
Stu
sumber
sumber
tr
membatalkan panggilan terakhir dengan menggunakanawk -F'% '...
Jawaban:
Anda bisa melakukan sesuatu seperti
atau bahkan
Karena
awk
pemisahan pada spasi putih secara default, Anda tidak perlu menentukan-F
dan Anda juga tidak perlu memotong spasi dengantr
. Terakhir, dengan menentukan jumlah baris yang diminati (NR==2
), Anda juga dapat menghapusnyatail
.sumber
-P
benar? Dalam semua kasus, bidang terakhir yang dicetakawk
adalah disk.-P
opsi yang baru saja ditambahkan Gilles.-P
. Meskipun demikian saya sarankan selalu menggunakan-P
ketika Anda parsing outputdf
, lebih mudah daripada memeriksa bahwa penggunaan khusus ini aman.mount | grep " on $(df -P ${FILE} | awk 'END{print $NF}') type" | awk '{print $1}'
Di GNU / Linux, jika Anda memiliki GNU
stat
dari coreutils 8.6 atau lebih tinggi, Anda bisa melakukan:Jika tidak:
Pendekatan Anda valid tetapi mengasumsikan titik mount tidak mengandung spasi,%, baris baru atau karakter yang tidak dapat dicetak lainnya, Anda dapat menyederhanakannya sedikit dengan versi GNU yang lebih baru
df
(8.21 atau lebih tinggi):sumber
df
tidak mengenali--output
opsi.df
> = 8.21.Untuk Linux kami memiliki findmnt dari util-linux yang dibuat khusus untuk ini
Perhatikan bahwa beberapa jenis mountpoint acak dapat dikembalikan jika ada beberapa bind mounts. Menggunakan
df
memiliki masalah yang sama.sumber
Sejak
stat
mengembalikan bidang "Perangkat", saya ingin tahu bagaimanastat()
panggilan pustaka yang mendasarinya dapat digunakan untuk mendapatkan informasi ini secara terprogram dengan cara yang sesuai dengan POSIX.Potongan kode C ini:
Akan memberikan ID perangkat utama dan kecil untuk perangkat yang berisi file yang tercantum pada baris perintah (
argv[1]
). Sayangnya,major()
danminor()
bukan POSIX, meskipun halaman manual mengklaim mereka "ada di banyak sistem lain" selain GNU / linux.Anda kemudian bisa mendapatkan korespondensi antara nomor utama / kecil perangkat dan simpul perangkat dari, mis.
/proc/diskstats
, Dan memetakan tempat untuk me-mount poin/proc/mounts
, alias./etc/mtab
.Jadi utilitas baris perintah untuk melakukan ini akan sangat sederhana.
sumber
/proc/diskstats
hanya untuk perangkat blok, Anda akan melewatkan NFS, proc, fuse ... Di Linux setidaknya, mountpoints yang berbeda dapat memiliki maj + min yang samast_dev
mungkin tidak menyediakan cara untuk membedakan satu partisi NFS dari yang lain. Siapa pun yang benar-benar ingin menulis ini harus memperhitungkannya;)Berikut ini lebih banyak kode C ++ jika Anda ingin melakukan ini dari C ++ ...
Lebih banyak tautan untuk cara-cara terprogram
sumber