|
Mount/umount USB-FlashКак безопасно монтировать и размонтировать USB-Flash под Linux. Руками. Способ, который мне кажется наиболее удобным. /etc/fstabМне больше нравится, когда каждое устройство монтируется в своё место по 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Просто выполняем команду: $ mount /media/n78 umountРазмонтирование выполняется командой 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. Вы можете связаться со мной по e-mail a.michurin@gmail.com.
|