Solusi 1:
Hindari penggunaan /etc/mtab
karena mungkin tidak konsisten.
Hindari pemipetan mount
karena tidak perlu terlalu rumit.
Cukup:
if grep -qs '/mnt/foo ' /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."
fi
(Spasi setelah /mnt/foo
adalah untuk menghindari pencocokan mis. /mnt/foo-bar
.)
Solusi 2:
if mountpoint -q /mnt/foo
then
echo "mounted"
else
echo "not mounted"
fi
atau
mountpoint -q /mnt/foo && echo "mounted" || echo "not mounted"
Solusi 3:
findmnt -rno SOURCE,TARGET "$1"
menghindari semua masalah di jawaban lain. Itu melakukan pekerjaan dengan bersih hanya dengan satu perintah.
Pendekatan lain memiliki kelemahan berikut:
grep -q
dangrep -s
adalah langkah tambahan yang tidak perlu dan tidak didukung di semua tempat./proc/\*
tidak didukung di mana-mana. (mountpoint
juga berdasarkan proc).mountinfo
didasarkan pada /proc/..cut -f3 -d' '
mengacaukan spasi dalam nama jalur- Mengurai pemasangan ruang putih bermasalah. Halaman manualnya sekarang mengatakan:
.. mode daftar dipertahankan hanya untuk kompatibilitas mundur.
Untuk keluaran yang lebih kuat dan dapat disesuaikan, gunakan findmnt (8), terutama dalam skrip Anda.
Fungsi Bash:
#These functions return exit codes: 0 = found, 1 = not found
isMounted () { findmnt -rno SOURCE,TARGET "$1" >/dev/null;} #path or device
isDevMounted () { findmnt -rno SOURCE "$1" >/dev/null;} #device only
isPathMounted() { findmnt -rno TARGET "$1" >/dev/null;} #path only
#where: -r = --raw, -n = --noheadings, -o = --output
Contoh penggunaan:
if isPathMounted "/mnt/foo bar"; #Spaces in path names are ok.
then echo "path is mounted"
else echo "path is not mounted"
fi
if isDevMounted "/dev/sdb4";
then echo "device is mounted"
else echo "device is not mounted"
fi
#Universal:
if isMounted "/mnt/foo bar";
then echo "device is mounted"
else echo "device is not mounted"
fi
if isMounted "/dev/sdb4";
then echo "device is mounted"
else echo "device is not mounted"
fi
Solusi 4:
Skrip seperti ini tidak akan pernah portabel. Rahasia kotor di unix adalah bahwa hanya kernel yang tahu di mana filesystem berada, dan singkatnya seperti /proc (tidak portabel) itu tidak akan pernah memberi Anda jawaban langsung.
Saya biasanya menggunakan df untuk menemukan titik-mount dari subdirektori, dan di sistem file apa subdirektori itu berada.
Misalnya (memerlukan posix shell seperti ash / AT&T ksh / bash / etc)
case $(df $mount)
in
$(df /)) echo $mount is not mounted ;;
*) echo $mount has a non-root filesystem mounted on it ;;
esac
Agak memberi tahu Anda informasi yang berguna.
Solusi 5:
berikut ini adalah apa yang saya gunakan di salah satu cron-job cadangan rsync saya. memeriksa untuk melihat apakah /backup sudah terpasang, dan mencoba memasangnya jika tidak (mungkin gagal karena drive berada di hot-swap bay dan bahkan mungkin tidak ada di sistem)
CATATAN:berikut ini hanya berfungsi di linux, karena greps /proc/mounts - versi yang lebih portabel akan menjalankan 'mount | grep /backup', seperti pada jawaban Matthew..
if ! grep -q /backup /proc/mounts ; then if ! mount /backup ; then echo "failed" exit 1 fi fi echo "suceeded." # do stuff here