Мне больше нравится, когда каждое устройство монтируется в своё место по UUID. Это позволяет гарантированно избежать конфликтов имён устройств.
Узнать UUID устройства очень просто:
# blkid /dev/sdb1
/dev/sdb1: UUID="7A82-1B89" TYPE="vfat"
Теперь прописываем в /etc/fstab
:
UUID=7A82-1B89 /media/n78 vfat user,noauto,noatime,flush 0 0
Готово. Теперь именно это устройство будет монтироваться именно в это место.
Полезными опциями являются ещё указания кодировок:
codepage=866,iocharset=koi8-r
.
Просто выполняем команду:
$ mount /media/n78
Размонтирование выполняется командой umount:
$ umount /media/n78
Но тут очень легко нарваться на то, что система занята и не может быть размонтирована:
umount: /media/n78: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
В этом случае следует освободить систему и повторить попытку.
Скрипт для принудительного размонтирования может выглядеть так:
#!/bin/sh
# пытаемся убить все блокирующие процессы вежливо
fuser -k TERM -m /media/n78
sleep 1
# если кто-то уцелел, то пытаемся убить их грубо
fuser -k KILL -m /media/n78
sleep 1
# а вот теперь размонтируем
umount /media/n78
Чуть более развёрнутая версия того же самого без лишних ожиданий может быть такой:
#!/bin/sh
if test "_$#" = '_1'
then
FS="$1"
else
echo 'Usage:' $0 '/mount-point'
exit 1
fi
for sig in TERM KILL
do
if mountpoint -q "$FS"
then
if fuser -m "$FS"
then
fuser -k $sig -m "$FS"
sleep 1
else
break
fi
else
echo 'not mounted'
exit 0
fi
done
umount "$FS"
Обратите внимание: убивание процессов — довольно чувствительная
операция, поэтому надо быть особо осторожным. В частности,
если файловая система не смонтирована, то действия будут
отнесены к корневой файловой системе и скрипт перебьёт
всех, до кого дотянется. Поэтому важно проверять mountpoint
.