Anda tidak repot-repot menyebutkan O/S.
Ubuntu Linux 11.10 (dan mungkin versi Linux yang paling mutakhir) memiliki mountpoint
perintah.
Berikut adalah contoh di salah satu server saya:
$ mountpoint /oracle
/oracle is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
Sebenarnya, dalam kasus Anda, Anda seharusnya dapat menggunakan -q
opsi, seperti ini:
mountpoint -q /foo/bar || mount -o bind /some/directory/here /foo/bar
Semoga itu bisa membantu.
Panduan mountpoint
mengatakan bahwa itu:
memeriksa apakah direktori atau file yang diberikan disebutkan dalam file /proc/self/mountinfo.
Panduan mount
mengatakan bahwa:
Mode daftar dipertahankan hanya untuk kompatibilitas mundur. Untuk keluaran yang lebih kuat dan dapat disesuaikan, gunakan findmnt(8), terutama di skrip Anda.
Jadi perintah yang benar untuk digunakan adalah findmnt
, yang merupakan bagian dari util-linux
paket dan, menurut manual:
dapat mencari di /etc/fstab, /etc/mtab atau /proc/self/mountinfo
Jadi itu sebenarnya mencari lebih banyak hal daripada mountpoint
. Ini juga menyediakan opsi yang nyaman:
-M, --mountpoint jalur
Secara eksplisit mendefinisikan file atau direktori mountpoint. Lihat juga --target.
Singkatnya, untuk memeriksa apakah sebuah direktori dipasang dengan bash, Anda dapat menggunakan:
if [[ $(findmnt -M "$FOLDER") ]]; then
echo "Mounted"
else
echo "Not mounted"
fi
Contoh:
mkdir -p /tmp/foo/{a,b}
cd /tmp/foo
sudo mount -o bind a b
touch a/file
ls b/ # should show file
rm -f b/file
ls a/ # should show nothing
[[ $(findmnt -M b) ]] && echo "Mounted"
sudo umount b
[[ $(findmnt -M b) ]] || echo "Unmounted"
Solusi saya:
is_mount() {
path=$(readlink -f $1)
grep -q "$path" /proc/mounts
}
Contoh:
is_mount /path/to/var/run/mydir/ || mount --bind /var/run/mydir/ /path/to/var/run/mydir/
Untuk jawaban Mark J. Bobak, mountpoint
tidak berfungsi jika dipasang dengan bind
opsi dalam sistem file yang berbeda.
Untuk jawaban Christopher Neylan, tidak perlu mengarahkan keluaran grep ke /dev/null, cukup gunakan grep -q
sebagai gantinya.
Yang paling penting, kanonikkan jalur dengan menggunakan readlink -f $mypath
:
- Jika Anda memeriksa jalur seperti
/path/to/dir/
diakhiri dengan garis miring terbalik, jalur di/proc/mounts
ataumount
hasilnya adalah/path/to/dir
- Di sebagian besar rilis linux,
/var/run/
adalah symlink dari/run/
, jadi jika Anda memasang bind untuk/var/run/mypath
dan periksa apakah sudah terpasang, itu akan ditampilkan sebagai/run/mypath
di/proc/mounts
.
Menjalankan mount
perintah tanpa argumen akan memberi tahu Anda tunggangan saat ini. Dari skrip shell, Anda dapat memeriksa titik pemasangan dengan grep
dan pernyataan if:
if mount | grep /mnt/md0 > /dev/null; then
echo "yay"
else
echo "nay"
fi
Dalam contoh saya, pernyataan if memeriksa kode keluar dari grep
, yang menunjukkan jika ada kecocokan. Karena saya tidak ingin hasilnya ditampilkan ketika ada kecocokan, saya mengarahkannya ke /dev/null
.