Apa cara terbaik (dapat diandalkan, portabel, dll.) Untuk memeriksa apakah folder yang diberikan ada pada sistem file remote yang terpasang (nfs) dalam skrip shell?
Saya mencari perintah yang akan terlihat seperti:
chk-remote-mountpoint /my/path/to/folder
linux
shell-script
filesystems
mount
Totor
sumber
sumber
/etc/mtab
atau hasilmount
daripada menggunakandf
bisa dilakukan dalam beberapa kasus lagi./proc/mounts
mount
, atau/etc/mtab
bahkan/proc/mounts
tidak standar sehingga tidak ada jaminan tentang apa yang dapat ditemukan di sana ...-T
memiliki arti berbeda di siniAnda bisa menggunakan GNU
stat
.%m
untuk mengetahui titik mount.%T
(dalam mode sistem file) untuk mengetahui nama sistem file.Dengan demikian, Anda tahu bahwa
/usr/src/linux
, di sistem saya, disimpan dalam sistem file yang di-mount/usr/src
dan memiliki tipe sistem filereiserfs
.Lihat juga
man stat
untuk referensi lebih lanjut. Ini adalah perintah yang sangat serbaguna, berguna hampir selalu ketika Anda membutuhkan info tentang file dan tidak ingin kembali kegrep | awk
wardness.sumber
stat
tidak memiliki%m
opsi untuk--format
(menggunakan Debian Squeeze, coreutils 8.5). Jadi, saya kira solusi ini tidak terlalu bisa diandalkan.2010-08-27 <Aaron Burgemeister> stat: add %m to output the mount point for a file
. Itu hampir 3 tahun yang lalu. Luar biasa bahwa Debian masih belum memiliki ini.mount -l
dan gunakangrep
,,sed
atauawk
untuk menemukan baris yang merujuk ke direktori yang dimaksud.sumber
/my/path/to/the/directory
sebenarnya ada sesuatu dari mountpoint/my/path
dengan jawaban Anda. Mungkin Anda bisa memberikan beberapa rincian lebih lanjut tentanggrep
,sed
,awk
perintah Anda menyarankan (jawaban yang lengkap) ?.mount -l | grep 'type nfs' | sed 's/.* on \([^ ]*\) .*/\1/'
seharusnya memberi Anda daftar semua nfs mountpoints pada sistem.mount | fgrep "`stat --printf=" on %m type" /var/log/`". The
perintah stat: mount` akan mencetak semua titik mount, dalam<device> on <mountpoint> type <type>
format. Untuk memahami ini, saya telahstat --printf
menghasilkanon <mountpoint> type
bagian.Sayangnya, tidak ada jawaban Unix universal untuk itu.
Satu hal yang dapat Anda lakukan, untuk file yang diberikan
/a/b/c/d
adalah berjalan di jalan:... dan lakukan
stat(2)
pada setiap level, hinggast_dev
perubahan. Maka Anda akan tahu di mana titik mount. Kemudian Anda dapat mencari jalur kanonik titik mount itu/etc/mtab
atau dalam outputmount
untuk mengetahui tipe sistem file. Kemudian mencari tahu apa yang jauh dan apa yang tidak akan menjadi rumit terutama untuk yang tipe sekering. Misalnya,nfs
,cifs
,fuse.sshfs
,fuse.davfs
yang jelas, tapi bagaimana misalnyafuse.gvfs-fuse-daemon
ataufuse.avfsd
yang dapat memiliki keduanya jaringan dan non-jaringan file?sumber
stat(2)
, saya pikir Anda merujuk fungsi C, tapi saya menggunakan shell. Namun,st_dev
merujuk ke ID perangkat utama dan kecil (apakah itu spesifik untuk Linux?), Dan perintah shellstat(1)
memiliki (non-standar)%t
dan%T
dengan--format
opsi untuk masing-masing nomor besar dan kecil, tetapi selalu mengembalikan "0" (lokal dan nfs ). Saya mencoba pada Debian Squeeze dan Lenny.--file-system
opsi?--file-system
."-L" ke df (1) akan gagal dengan kesalahan pada sistem file non-lokal, sehingga Anda dapat menggunakan perilaku ini untuk mengetahui apakah sistem file jauh:
Namun,
-l
opsi ini tidak standar .sumber
df
gagal dan itu saja membuat ini bukan jawaban yang sangat baik, tetapi ia mencoba menjawab pertanyaan itu jadi saya tidak melihat mengapa Anda menyebutnya "bukan jawaban".df /path
akan memberi tahu Anda bahwa itu/path
adalah titik pemasangan jika dikatakan bahwa titik pemasangan bukan/
.sumber
Kerjakan saja
Jika bidang pertama (Filesystem) dalam format host: / path maka Anda tahu itu adalah NFS
sumber
Anda dapat menggunakan
df -t
di Linux dandf -T
di sistem BSD.Dari man df :
sumber
-t
opsi tersebut memiliki arti berbeda dalam POSIX / SUS. Jadi, menggunakan opsi ini dapat memberikan hasil yang tidak konsisten dalam versi yang berbeda pada alat / UNIX.Saya pribadi akan menggunakan
mountpoint
(sangat portabel di Linux!):atau
showmount
yang cukup banyak harus diinstal pada sistem apa pun yang benar-benar me-mountNFS
share (bagian darinfs-common
paket):Pilihan lain akan seperti:
sumber
mountpoint
utilitas tidak memberitahu Anda jika mount point terpencil. Selain itu, sistem file jarak jauh tidak terbatas pada sistem file NFS. Akhirnya,mountpoint
tidak standar (tidak ada dalam daftar ini ).mountpoint
adalah standar dalam hal ini.akan memeriksa semua folder bernama 'nfs' jika sudah terpasang
sumber
nfs
.