saya menggunakan
mount -o bind /some/directory/here /foo/bar
Saya ingin memeriksa /foo/bar
meskipun dengan skrip bash, dan melihat apakah sudah dipasang? Jika tidak, panggil perintah mount di atas, jika tidak lakukan sesuatu yang lain. Bagaimana saya bisa melakukan ini?
CentOS adalah sistem operasinya.
Jawaban:
Menjalankan
mount
perintah tanpa argumen akan memberi tahu Anda pemasangan saat ini. Dari skrip shell, Anda dapat memeriksa titik pemasangan dengangrep
dan pernyataan if:Dalam contoh saya, pernyataan-if memeriksa kode keluar dari
grep
, yang menunjukkan jika ada kecocokan. Karena saya tidak ingin output ditampilkan ketika ada kecocokan, saya mengarahkannya ke/dev/null
.sumber
grep
mengembalikan status keluar bukan nol jika tidak ada kecocokan. Tidak perlu pengujian, atau subkulit dibuat oleh $ ().if command | grep -q 'stuff'; then ...
mount | grep ...
menunjukkan bahwa mount bind Anda masih aktif. Jika perangkat yang mendasari dilepas dan dipasang kembali, ikatan pemasangan sebenarnya tidak akan lagi menghubungkan dua file / direktori meskipunmount
masih menunjukkan itu terhubung. Dan jika Anda melakukannyaumount ...
bahkan akan memberi tahu Anda itu tidak dipasang, meskipunmount
dikatakan itu. Cacat BESAR dalam sistem file linux.readlink -f
, yang tidak mengembalikan apa-apa ketika path / file tidak ada. Jika yang mendasari / mount / path / to_file tidak ada (per readlink), mount yang mendasari rusak (pasang kembali mount dan binding yang mendasarinya). Jika file yang mendasarinya ada di sana danreadlink -f
mengatakan bahwa versi pengikatan dari file itu tidak ada, pengikatan rusak, cukup pasang ulang pengikatan./mnt/md0xxx
maka perintah akan menunjukkan/mnt/md0
mount sementara apa yang tidak harus ...Anda tidak perlu repot-repot menyebutkan O / S.
Ubuntu Linux 11.10 (dan mungkin Linux yang paling mutakhir) memiliki
mountpoint
perintah.Berikut contoh di salah satu server saya:
Sebenarnya, dalam kasus Anda, Anda harus dapat menggunakan
-q
opsi, seperti ini:Semoga membantu.
sumber
Manual
mountpoint
mengatakan bahwa:Manual
mount
mengatakan bahwa:Jadi perintah yang benar untuk digunakan adalah
findmnt
, yang merupakan bagian dariutil-linux
paket itu sendiri dan, menurut manual:Jadi sebenarnya ini mencari lebih banyak hal daripada
mountpoint
. Ini juga menyediakan opsi yang nyaman:Singkatnya, untuk memeriksa apakah sebuah direktori dipasang dengan bash, Anda dapat menggunakan:
Contoh:
sumber
Saya suka jawaban yang digunakan
/proc/mounts
, tetapi saya tidak suka melakukan grep sederhana. Itu bisa memberi Anda hasil positif palsu. Apa yang benar - benar ingin Anda ketahui adalah "apakah salah satu baris memiliki string yang sama persis untuk bidang nomor 2". Jadi, tanyakan pertanyaan itu. (dalam hal ini saya sedang memeriksa/opt
)sumber
mountpoint
ataufindmnt
ada. Balasan yang sangat sederhana, banyak kegembiraan, UNIX seperti itu :)Solusi saya:
Contoh:
Untuk jawaban Mark J. Bobak ,
mountpoint
tidak berfungsi jika mount denganbind
opsi di filesystem berbeda.Untuk jawaban Christopher Neylan , tidak perlu mengalihkan keluaran grep ke / dev / null, cukup gunakan
grep -q
.Yang paling penting, kanonikalisasi jalur dengan menggunakan
readlink -f $mypath
:/path/to/dir/
diakhiri dengan garis miring terbalik, jalur masuk/proc/mounts
ataumount
keluaran adalah/path/to/dir
/var/run/
adalah symlink dari/run/
, jadi jika Anda memasang bind/var/run/mypath
dan memeriksa apakah sudah terpasang, itu akan ditampilkan seperti/run/mypath
pada/proc/mounts
.sumber
Solusi bersih lainnya adalah seperti itu:
Yang pasti, 'gema sesuatu' dapat diganti dengan apa pun yang perlu Anda lakukan untuk setiap kasus.
sumber
Jawaban di sini terlalu rumit, cukup periksa apakah mount ada menggunakan:
cat /proc/mounts | tail -n 1
Ini hanya mengeluarkan folder yang terakhir dipasang, jika Anda ingin melihat semuanya, hapus saja perintah tail.
sumber
Di .bashrc saya, saya membuat alias berikut:
sumber